快速排序算法c++实现(带注释)
#include <iostream>
#include <vector>
using namespace std;
// 快排实现
void quickSort(int left, int right, vector<int> &arr)
{
if (left >= right)
return;
int i, j, base, temp;
i = left, j = right;
base = arr[left]; //取最左边的数为基准数
while (i < j)
{
while (arr[j] >= base && i < j)
j--;
while (arr[i] <= base && i < j)
i++;
if (i < j) //上面循环完后 arr[i]>arr[j] 所以要交换
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
//基准数归位
arr[left] = arr[i]; //交换后基准数存到了arr[i]中
arr[i] = base;
quickSort(left, i - 1, arr); //递归左边
quickSort(i + 1, right, arr); //递归右边
}
int main()
{
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++)
{
cin >> arr[i];
}
quickSort(0, n - 1, arr);
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
}