#include <cstdio>
int partition(int a[], int p, int r)
{
int x = a[r];
int i = p-1;
int tmp = 0;
for (int j = p; j < r; ++j) {
if (a[j] <= x) {
++i;
tmp = a[j];
a[j] = a[i];
a[i] = tmp;
}
}
++i;
a[r] = a[i];
a[i] = x;
return i;
}
void qsort(int a[], int p, int r)
{
if (p < r) {
int q = partition(a, p ,r);
qsort(a, p, q-1);
qsort(a, q+1, r);
}
}
int main()
{
int a[10] = {999,2,8,7,1,3,6,5,4};
qsort(a,1,8);
for (int i = 1; i <= 8; ++i)
printf("%d ", a[i]);
while (true);
return 0;
} 好吧,我也可以裸写快排了.
本文介绍了一个简单的快速排序算法实现过程,通过partition函数进行分区,并使用递归的方式完成整个数组的排序。示例代码中对一个包含9个元素的整型数组进行了排序。

被折叠的 条评论
为什么被折叠?



