Quicksort
Quicksort is an extremely efficient sorting method that is a natural for implementation using recursion
void quicksort(int list[], int start, int end)
{
int mid;
if(start != end) {
mid = split(list, start, end);
quicksort(list, start, mid-1);
quicksort(list, mid+1, end);
}
}
int split(int list[], int start, int end)
{
int left = start;
int right = end;
int pivot = list[start];
int temp;
while(left < right) {
// scan to the right looking for a value smaller than the pivot
while(list[right] > pivot)
right--;
// scan to the left, looking for a value larger than the pivot
while( (left < right) && (list[left] <= pivot) )
left++;
if(left < right) {
// swap list[left] and list[right]
temp = list[left];
list[left] = list[right];
list[right] = temp;
}
}
list[start] = list[right];
list[right] = pivot;
return(right);
}