快速排序(简单易懂的代码)
快速排序是经常用到的排序算法,也是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; }
下一篇:
游船费问题-动态规划