快速排序是经常用到的排序算法,也是C++的STL库中用到的一种排序算法,这里手动实现以下,供自己回忆,供他人参考 ~
#include <bits/stdc++.h>
using namespace std;
// 找轴点
int partition(vector<int> &vec, int low, int high) {
//找轴点
int pivot = vec[low];
while (low < high) {
while (low < high && vec[high] >= pivot) high--;
vec[low] = vec[high]; //交换1
while (low < high && vec[low] <= pivot) low++;
vec[high] = vec[low]; //交换2
}
// 把轴点的值归位
vec[low] = pivot;
// 返回轴点位置
return low;
}
// 快速排序
void quickSort(vector<int> &vec, int low, int high) {
if (low >= high) {
return; // 递归出口
}
// 找到轴点
int mid = partition(vec, low, high);
// 递归
quickSort(vec, low, mid - 1);
quickSort(vec, mid + 1, high);
}
int main() {
// 初始化一个待排序的向量
vector<int> vec = {1, 8, -6, 12, 5, 9};
// 调用自己写的快排
quickSort(vec, 0, vec.size() - 1);
// 打印出排序之后的结果
for (auto x : vec) {
cout << x << ","; // -6,1,5,8,9,12,
}
return 0;
}
版权声明:本文为qq_53527856原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。