#include <iostream>
#include <vector>
#include <algorithm>
using std::cout;
using std::swap;
using std::vector;
// 快排
int partition(vector<int>& v, int left, int right)
{
int pivot = v[right]; // 基准点,一定要right
int idx1;
int idx2;
idx1 = idx2 = left;
for(idx2;idx2 < right;++ idx2)
{
if(v[idx2] <= pivot) // 这里没有错,让小于基准点的值进行交换
{
swap(v[idx1 ++],v[idx2]);
}
}
swap(v[idx1],v[right]);
return idx1;
}
vector<int> quickSort(vector<int> &v, int left, int right)
{
if (left < right)
{
int middleIdx = partition(v, left, right);
quickSort(v, 0, middleIdx - 1); // 排左边的
quickSort(v, middleIdx + 1, right); // 排右边的
}
return v;
}
int main(int argc, char const *argv[])
{
vector<int> v({5, 2, 6, 3, 7, 4, 3, 6, 9, 44, 32, 67});
vector<int> rst = quickSort(v, 0, v.size() - 1);
for (auto &num : v)
{
cout << num << " ";
}
cout << "\n";
getchar();
return 0;
}
快速排序(C++版本)
于 2024-10-04 16:32:21 首次发布