Citation :
#include <stdio.h>
#include <stdlib.h>
void swap (int array[], int size, int i,int j) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
void print_array ( int array[], int size) {
int j;
for (j=0;j<size;j++) printf( " %d", array[j]);
}
void quicksort (int array[], int size)
{
qs(array,size,0,size-1);
}
void qs (int array[], int size, int i_start, int i_end)
{
int i_pivot;
if(i_start<i_end)
{
i_pivot=partition(array,size,i_start,i_end);
qs(array,size,i_start,i_pivot-1);
qs(array,size,i_pivot+1,i_end);
}
}
int partition (int array[], int size, int i_start, int i_end)
{
int pivot=array[i_start];
int i=i_start, j=i_end;
while(1)
{
while(array[j]>pivot) j--;
while((array[i]<pivot)||((array[i]==pivot)&&(array[j]==pivot))) i++;
if (i<j) swap(array,size,i,j);
else return j;
}
}
int main ()
{
int tab[10]={5,9,3,1,7,6,2,5,4,8};
print_array(tab,10);
printf("\n" );
quicksort(tab,10);
print_array(tab,10);
printf("\n" );
return 0;
}
|