#include<algorithm>
#include<functional>
void f(int start, int end, int *num) {
if (start >= end)return;
int point = start;
for (int i = start; i < end; i++) {
if (point == -1 && num[i] > num[end]) {
point =i;
}//找到大于end标记位的点
else if (point != -1 && num[i] < num[end]) {
std::swap(num[i], num[point]);
point =-1;
}//找到小于end位置并交换
}
if (point != -1) {//排除所有情况小于end位置值的情况
f(start, point - 1, num);
f(point + 1, end, num);
}
else {
f(start, end -1, num);
}
}
int main() {
int num[5] = { 3,1,4,5,9 };
f(0, 4, num);
return 0;
}
快排写法
最新推荐文章于 2024-04-14 14:26:34 发布