C Code for Quick Sort

Writing programs for sorting of a given set of numbers is one of the common programming tasks. Various types of sorting techniques like selection sort, inserting sort and quick sort are quite popular. Here C code for Quick sort is being presented. Here, in each iteration the array is subdivided into 2 arrays, and hence is a good example of Divide and Conquer algorithm. The program has the worst case complexity of O(n²) and an average and best case complexity of O(n logn).

Following is the C code implementation of Quick Sort algorithm :

#include "stdio.h"

int split ( int*, int, int ) ;

void main( )
{
	int arr[10] = { 11, 2, 9, 13, 57, 25, 17, 1, 90, 3 } ;
	int i ;

	void quicksort ( int *, int, int ) ;

	quicksort ( arr, 0, 9 ) ;

	printf ( "\nArray after sorting:\n") ;

	for ( i = 0 ; i <= 9 ; i++ )
		printf ( "%d\t", arr[i] ) ;

}

void quicksort ( int a[ ], int lower, int upper )
{
	int i ;
	if ( upper > lower )
	{
		i = split ( a, lower, upper ) ;
		quicksort ( a, lower, i - 1 ) ;
		quicksort ( a, i + 1, upper ) ;
	}
}

int split ( int a[ ], int lower, int upper )
{
	int i, p, q, t ;

	p = lower + 1 ;
	q = upper ;
	i = a[lower] ;

	while ( q >= p )
	{
		while ( a[p] < i )
			p++ ;

		while ( a[q] > i )
			q-- ;

		if ( q > p )
		{
			t = a[p] ;
			a[p] = a[q] ;
			a[q] = t ;
		}
	}

	t = a[lower] ;
	a[lower] = a[q] ;
	a[q] = t ;

	return q ;
}


Related Posts

  • Share/Bookmark
You can leave a response, or trackback from your own site.

3 Responses to “C Code for Quick Sort”

  1. br0d3r says:

    this implementation becames very slow when array is long. Here is much faster implementation:
    http://www.algorithmist.com/index.php/Quicksort.c

  2. webdevil_coder says:

    #include

    void quicksort(int [10],int,int);

    int main(){
    int x[20],size,i;

    printf(“Enter size of the array: “);
    scanf(“%d”,&size);

    printf(“Enter %d elements: “,size);
    for(i=0;i<size;i++)
    scanf("%d",&x[i]);

    quicksort(x,0,size-1);

    printf("Sorted elements: ");
    for(i=0;i<size;i++)
    printf(" %d",x[i]);

    return 0;
    }

    void quicksort(int x[10],int first,int last){
    int pivot,j,temp,i;

    if(first<last){
    pivot=first;
    i=first;
    j=last;

    while(i<j){
    while(x[i]<=x[pivot]&&ix[pivot])
    j–;
    if(i<j){
    temp=x[i];
    x[i]=x[j];
    x[j]=temp;
    }
    }

    temp=x[pivot];
    x[pivot]=x[j];
    x[j]=temp;
    quicksort(x,first,j-1);
    quicksort(x,j+1,last);

    }
    }

  3. webdevil_coder says:

    Try mine above!!

Leave a Reply

| Shop Free Cellular Phones at Bestincellphones.com. | Thanks to Best CD Rates, iCellPhoneDeals.com Offers Best Cell Phone Deals. and Incinerador De Grasa