快速排序基本算法由四步组成:
1.如果集合S中元素个数为0或1,直接返回;
2.取S中一个任一个元素v,称之为枢纽元pivot
3.把S中剩余元素分成两个不相交的集合S1, S2
4.qsort(S1)后,qsort(S2)
取第一个元素为pivot,代码实现如下:
void qsort(int *arr, int left, int right)
{
if (left > right) {
return;
}
int k = arr[left];
int i = left;
int j = right;
while (i != j) {
while (i < j && arr[j] >= k) {
--j;
}
while (i < j && arr[j] <= k) {
++i;
}
if (i != j) {
swap(arr[i], arr[j]);
}
}
if (left != i)
swap(arr[left], arr[i]);
qsort(arr, left, i - 1);
qsort(arr, i + 1, right);
}