quicksort#
quicksort.c
/* quicksort: example of recursive sorting
Developed by C.A.R. Hoare in 1962. Given an array,one element is chosen and the others are
partitioned into two subsets - those less than the partition element and those greater than or
equal to it. The same process is then applied recursively to the two subsets. When a subset has fewer than two elements, it does not need any sorting; this stops the recursion */
#include<stdio.h>
void qsort(int v[],int left,int right);
void swap(int v[],int i,int j);
int main(void)
{
int i,left,right,v[10]={43,53,12,64,15,67,87,10,6,90};
left=0;
right=9;
printf("Unsorted Array\n");
for(i=0;i<=9;++i)
printf(" %d",v[i]);
qsort(v,left,right);
printf("\nSorted Array\n");
for(i=0;i<=9;++i)
printf(" %d",v[i]);
return 0;
}
void qsort(int v[],int left,int right)
{
int i,last;
if(left>=right)
return;
swap(v,left,(left+right)/2);
last=left;
for(i=left+1;i<=right;i++)
if(v[i] < v[left])
swap(v,++last,i);
swap(v,left,last);
qsort(v,left,last-1);
qsort(v,last+1,right);
}
/* swap: interchange v[i] and v[j] */
void swap(int v[],int i,int j)
{
int temp;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}