Encoders
Hub for Computer Whizzes Register to join us

Encoders > More... > C > Program

/* Function quicksort(array,left,right) based on quicksort algorithm
   developed by C. A. R. Hoare in 1962. */

#include <stdio.h>

void quicksort(int v[], int left, int right);

main()
{
	int a[]={12,34,65,9,19,76,20,13,60,23}, n=sizeof(a)/sizeof(int), i;
        for(i=0;i<n;i++)
                printf("%d ",a[i]);
        printf("\n");
	quicksort(a,0,9);
        for(i=0;i<n;i++)
                printf("%d ",a[i]);
        printf("\n");
}

void quicksort(int v[], int left, int right)
{
	int i, last;
	void swap(int v[], int i, int j);
        if(left>=right)
		return;
	swap(v,i=last=left,(left+right)/2);
        for(i++; i<=right; i++)
                if(v[i]<v[left])
			swap(v,++last,i);
	swap(v,left,last);
	quicksort(v,left,last-1);
	quicksort(v,last+1,right);
}

void swap(int v[], int i, int j)
{
	int temp;
	temp=v[i];
	v[i]=v[j];
	v[j]=temp;
}