Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<conio.h>
- #include<stdlib.h>
- #define SIZE 10
- void swap(int *p,int *q)
- {
- int temp=*p;
- *p=*q;
- *q=temp;
- }
- void printarray(int a[],int n)
- {
- int i;
- for (i=0;i<n;i++)
- printf("%d, ",a[i]);
- }
- int partition(int a[],int low,int high,int flag)
- {
- int pivot,start,end;
- pivot=a[low];
- start=low;
- end=high;
- if(flag==0)//ascending oder
- {
- while(start<end)
- {
- while(a[start]<=pivot)
- {
- start++;
- }
- while(a[end]>pivot)
- {
- end--;
- }
- if(start<end)
- {
- swap(&a[start],&a[end]);
- }
- }
- swap(&a[low],&a[end]);
- }
- else
- {
- while(start<end)//decending oder
- {
- while(a[start]>=pivot)
- {
- start++;
- }
- while(a[end]<pivot)
- {
- end--;
- }
- if(start<end)
- {
- swap(&a[start],&a[end]);
- }
- }
- swap(&a[low],&a[end]);
- }
- return end;
- }
- void quick_sort(int a[],int lb,int ub,int flag)
- {
- int loc;
- if(flag==0)
- {
- if(lb<ub)
- {
- loc=partition(a,lb,ub,flag);
- quick_sort(a,lb,loc-1,flag);
- quick_sort(a,loc+1,ub,flag);
- }
- }
- else
- {
- flag=1;
- if(lb<ub)
- {
- loc=partition(a,lb,ub,flag);
- quick_sort(a,lb,loc-1,flag);
- quick_sort(a,loc+1,ub,flag);
- }
- }
- }
- void ascending(int a[],int n)
- {
- int flag=0;
- quick_sort(a,0,n-1,flag);
- printf("\nSorted list in ascending order: ");
- printarray(a,n);
- }
- void decending(int a[],int n)
- {
- int flag=1;
- quick_sort(a,0,n-1,flag);
- printf("\nSorted list in decending order: ");
- printarray(a,n);
- }
- int main()
- {
- int ch,n,i,a[SIZE];
- printf("\nEnter the number of element ");
- scanf("%d",&n);
- printf("\nEnter the elements: ");
- for(i=0;i<n;i++)
- {
- scanf("%d",&a[i]);
- }
- while(1)
- {
- printf("\n1) Ascending order ");
- printf("\n2)Decending order");
- printf("\n3) Exit");
- printf("\nEnter your choise: ");
- scanf("%d",&ch);
- switch(ch)
- {
- case 1: ascending(a,n);
- break;
- case 2: decending(a,n);
- break;
- case 3: exit(0);
- break;
- }
- }
- }
Add Comment
Please, Sign In to add comment