Quick Sort
/***************************************/ /*PROGRAM TO PREFORM QUICK SORT*/ /***************************************/
#include<stdio.h> #include<conio.h> #include<process.h>
#define SIZE 50 int quick_sort(int [],int,int);
void main() { int a[SIZE],top=-1,lower[SIZE],upper[SIZE],beg,end,n,loc,i;
clrscr();
printf("Enter the size of array: "); scanf("%d",&n); printf("\nEnter the elements of array:\n"); for(i=0;i<n;i++) { scanf("%d",&a[i]); } if(n>1) { top=top+1; lower[0]=0; upper[0]=n-1; } else { printf("\nNo need of sorting as there is only one element"); getch(); exit(1); } while(top!=-1) { beg=lower[top]; end=upper[top]; top=top-1; loc=quick_sort(a,beg,end); if(beg<loc-1) { top=top+1; lower[top]=beg; upper[top]=loc-1; } if(loc+1<end) { top=top+1; lower[top]=loc+1; upper[top]=end; } } printf("\nAfter sorting the elements of array are:\n"); for(i=0;i<n;i++) { printf("%d ",a[i]); } getch(); }
int quick_sort(int a[],int beg,int end) { int left,right,loc,temp; left=beg; right=end; loc=beg;
again: while((a[loc]<=a[right])&&(loc!=right)) { right=right-1; } if(loc==right) { return(loc); } if(a[loc]>a[right]) { temp=a[loc]; a[loc]=a[right]; a[right]=temp; loc=right; }
while((a[left]<=a[loc])&&(left!=loc)) { left=left+1; } if(loc==left) { return(loc); } if(a[left]>a[loc]) { temp=a[loc]; a[loc]=a[left]; a[left]=temp; loc=left; } goto again; }
http://
Contributed by:
Rohit kakria
I am software developer, moderator of xpode.com
Resourse address on xpode.com
http://www.xpode.com/Print.aspx?Articleid=24
Click here to go on website
|