以下是快速排序功能实现。(分治策略,平均时间复杂度O(NlogN))
typedef int key_t;
#define swap(v1,v2) do{key_t tmp=v1;v1=v2;v2=tmp;}while(0)
void QuickSort(key_t array[], int start, int end)
{
int next_end = end;
int basic = start;
bool start_from_end = true;
if (end <= start) return;
while(start != end) {
if (start_from_end) {
if (array[end] < array[basic])
start_from_end = false;
else
end--;
} else {
if (array[start] > array[basic]) {
start_from_end = true;
swap(array[start], array[end]);
} else {
start++;
}
}
}
swap(array[basic], array[start]);
QuickSort(array, basic, start-1);
QuickSort(array, start+1, next_end);
}