快速排序

快速排序是一种较为常见的排序算法,平均时间复杂度为O(logn)

快速排序的代码实现

1
2
3
4
5
6
7
void (int array[], int p, int r) {
if (p < r) {
q = GetPos(array, p, r);
QuickSort(array, p, q - 1);
QuickSort(array, q + 1, r);
}
}

GetPos 函数实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int GetPos(int array[], int p, int r) {
int j = p;
for (int i = p; i < r; i++) {
if (array[i] < array[r]) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
j++;
}
}
int temp = array[r];
array[r] = array[j];
array[j] = temp;
return j;
}