# quick sort program in c

## Quicksort:

In quick sort one element is selected as a pivot from array.Using pivot array is divided into two parts elements less than pivot and greater than pivot. procedure is done until array get sorted

**Worst case performance:** O(n2)

**Best case performance:** O(n log n) (simple partition) / O(n) (three-way partition and equal keys)

**Average case performance:** O(n log n)

#include <stdio.h>

#include <conio.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 ) ;

clrscr( ) ;

printf ( "Quick sort.\n" ) ;

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

for ( i = 0 ; i <= 9 ; i++ )

printf ( "%d\t", arr[i] ) ;

quicksort ( arr, 0, 9 ) ;

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

for ( i = 0 ; i <= 9 ; i++ )

printf ( "%d\t", arr[i] ) ;

getch( ) ;

}

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 ;

}