自我学习 - C++快排
准备杭电复试,想着把数据结构相关的算法都自己写一遍,个人记录为主,带注释。
代码:
#include <iostream>
using namespace std;
void quickSort(int a[], int low, int high) {
int temp; //放枢轴的变量
int i = low, j = high;
if (low < high) {
temp = a[low]; //设置枢轴
while (i < j) {
while (i < j && a[j] >= temp) j--; // 若a[j]大于等于枢轴则继续从后往前找
if (i < j) { // 这时候表示已经发现a[j] < temp 则需要让a[j]的内容替换到a[i]且让i+1
a[i] = a[j];
++i;
}
while (i < j && a[i] < temp) i++; // 若a[i]小于枢轴则继续从前往后找
if (i < j) { // 这时候表示已经发现a[i] > temp 则需要让a[i]的内容替换到a[j]且j - 1
a[j] = a[i];
--j;
}
}
a[i] = temp; // 将枢轴内容放入
quickSort(a, low, i - 1); // 递归的对左侧进行快排
quickSort(a, i + 1, high); // 递归的对右侧进行快排
}
}
int main()
{
int a[8] = {2, 1, 9, 3, 7, 6, 5, 99};
quickSort(a, 0, 7);
for (int i = 0; i < 8; ++i) {
cout << a[i] << endl;
}
return 0;
}
输出结果:
"/Users/adamweng/C++ learning/cmake-build-debug/C___learning"
1
2
3
5
6
7
9
99

浙公网安备 33010602011771号