# 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={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;
}

```