Rishav_hitk_cse

cocktail shaker short

Jul 22nd, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.32 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. void cs_sort(int *,int);
  6. void swap(int *,int *);
  7. int main(void) {
  8.     int n,lower,upper,i;
  9.     clock_t start,end;
  10.     double total;
  11.    
  12.    
  13.     printf("Enter no. of elements:");
  14.     scanf("%d",&n);
  15.     printf("Enter the range:");
  16.     scanf("%d %d",&lower,&upper);
  17.    
  18.     int *array=(int *)malloc(n*sizeof(int));
  19.    
  20.     srand((unsigned)time(NULL));
  21.     for(i=0;i<n;i++)
  22.         array[i]=lower+rand()%(upper-lower);
  23.    
  24.     start=clock();
  25.     cs_sort(array,n);
  26.     end=clock();
  27.    
  28.     total=(double)(end-start)/CLOCKS_PER_SEC;
  29.    
  30.     for(i=0;i<n;i++){
  31.         printf("%d,",array[i]);
  32.     }
  33.    
  34.     printf("\n\nTime taken for cocktail shaker sort: %lf",total);
  35.     return 0;
  36. }
  37.  
  38. void cs_sort(int *a,int n){
  39.     int i,swapped=1,start,end;
  40.     start=0;
  41.     end=n-1;
  42.     while(swapped){
  43.         swapped=0;
  44.         for(i=start;i<end;i++){
  45.             if(a[i]>a[i+1]){
  46.                 swap(a+i,a+i+1);
  47.                 swapped++;
  48.             }    
  49.         }
  50.        
  51.        
  52.         if(!swapped)
  53.             break;
  54.            
  55.         end--;
  56.         for(i=end;i>=start;i--){
  57.             if(a[i]>a[i+1]){
  58.                 swap(a+i,a+i+1);
  59.                 swapped++;
  60.             }
  61.         }
  62.         start++;
  63.     }
  64.    
  65. }
  66.  
  67. void swap(int *a,int *b){
  68.     int temp;
  69.     temp=*a;
  70.     *a=*b;
  71.     *b=temp;
  72. }
Add Comment
Please, Sign In to add comment