#include<iostream>
using namespace std;
//i 到一个大于base的位置 j到达一个小于base的位置 交换这两个位置的数字
//i=j 时 然后再把i=j的那个数值,和基准值交换
void quicksort(int left, int right, int num[]) {
if (left >= right) return;
int i = left, j = right;
int base = num[left]; //基准数为最左面的位置
int temp;
while (i < j) {
while (i < j && num[j] >= base) j--; // 保证相遇时的值小于base,这样基数交换才不会出错
while (i < j && num[i] <= base) i++; //从i先开始 那么i停在大于base的位置
//找到之后
if (i < j) {
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
num[left] = num[i]; //交换基数
num[i] = base;
quicksort(left, i - 1, num);
quicksort(i + 1, right, num);
}
int main() {
int num[100] = {2,1,3,6,5,4}; //int型数组用于存储输入变量
quicksort(0, 5, num);
for (int j = 0; j < 6; j++) {
cout << num[j];
}
system("pause");
return 0;
}
面试常问 -快排- 自写输入输出
最新推荐文章于 2024-07-15 22:10:26 发布