Arnab_Manna

quick sort

Jun 22nd, 2020
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.09 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. #define SIZE 10
  5. void swap(int *p,int *q)
  6. {
  7.     int temp=*p;
  8.     *p=*q;
  9.     *q=temp;
  10. }
  11. void printarray(int a[],int n)
  12.  {
  13.     int i;
  14.     for (i=0;i<n;i++)
  15.          printf("%d, ",a[i]);
  16.  }
  17. int partition(int a[],int low,int high,int flag)
  18. {
  19.     int pivot,start,end;
  20.         pivot=a[low];
  21.         start=low;
  22.         end=high;
  23.     if(flag==0)//ascending oder
  24.     {
  25.         while(start<end)
  26.         {
  27.             while(a[start]<=pivot)
  28.             {
  29.                 start++;
  30.             }
  31.                
  32.             while(a[end]>pivot)
  33.             {
  34.                 end--;
  35.             }  
  36.                
  37.             if(start<end)
  38.             {
  39.                 swap(&a[start],&a[end]);
  40.             }
  41.         }
  42.         swap(&a[low],&a[end]);
  43.     }
  44.     else
  45.     {
  46.         while(start<end)//decending oder
  47.         {
  48.             while(a[start]>=pivot)
  49.             {
  50.                 start++;
  51.             }
  52.                
  53.             while(a[end]<pivot)
  54.             {
  55.                 end--;
  56.             }  
  57.                
  58.             if(start<end)
  59.             {
  60.                 swap(&a[start],&a[end]);
  61.             }
  62.         }
  63.         swap(&a[low],&a[end]);
  64.        
  65.     }
  66.     return end;
  67.  }
  68.  
  69.  void quick_sort(int a[],int lb,int ub,int flag)
  70.  {
  71.     int loc;
  72.     if(flag==0)
  73.     {
  74.      
  75.         if(lb<ub)
  76.         {
  77.             loc=partition(a,lb,ub,flag);
  78.             quick_sort(a,lb,loc-1,flag);
  79.             quick_sort(a,loc+1,ub,flag);
  80.            
  81.          }
  82.     }
  83.     else
  84.     {
  85.         flag=1;
  86.         if(lb<ub)
  87.         {
  88.             loc=partition(a,lb,ub,flag);
  89.             quick_sort(a,lb,loc-1,flag);
  90.             quick_sort(a,loc+1,ub,flag);
  91.            
  92.          }
  93.        
  94.     }
  95.  }
  96. void ascending(int a[],int n)
  97. {
  98.     int flag=0;
  99.     quick_sort(a,0,n-1,flag);
  100.     printf("\nSorted list in ascending order: ");
  101.     printarray(a,n);   
  102.    
  103. }
  104. void decending(int a[],int n)
  105. {
  106.     int flag=1;
  107.     quick_sort(a,0,n-1,flag);
  108.     printf("\nSorted list in decending order: ");
  109.     printarray(a,n);   
  110. }
  111. int main()
  112. {
  113.     int ch,n,i,a[SIZE];
  114.     printf("\nEnter the number of element ");
  115.     scanf("%d",&n);
  116.     printf("\nEnter the elements: ");
  117.     for(i=0;i<n;i++)
  118.     {  
  119.         scanf("%d",&a[i]);
  120.     }
  121.     while(1)
  122.     {
  123.         printf("\n1) Ascending order ");
  124.         printf("\n2)Decending order");
  125.         printf("\n3) Exit");
  126.         printf("\nEnter your choise: ");
  127.         scanf("%d",&ch);
  128.         switch(ch)
  129.         {
  130.             case 1: ascending(a,n);
  131.                     break;
  132.             case 2: decending(a,n);
  133.                     break;
  134.             case 3: exit(0);
  135.                     break;         
  136.         }
  137.     }
  138. }
Add Comment
Please, Sign In to add comment