快速排序精简版总容易理解版

来源:互联网 发布:史丹利快报淘宝店铺 编辑:程序博客网 时间:2024/05/17 07:09

#include<iostream>#include<vector>using namespace std;void fast_sort(vector<int>& a,int begin,int end){if(begin < end){int flag = a[begin];int i = begin;int j = end;while(i < j){while(i < j && a[j] >= flag)j--;a[i] = a[j];while(i < j&& a[i] < flag)i++;a[j] = a[i];}a[i] = flag;fast_sort(a,begin,i-1);fast_sort(a,i+1,end);}}int main(){vector<int> res;res.push_back(3);res.push_back(1);res.push_back(2);res.push_back(5);res.push_back(4);res.push_back(9);res.push_back(7);res.push_back(8);fast_sort(res,0,7);for(int i = 0; i < res.size(); ++i){cout << res[i] << endl;}return 0;}

上面只有三个地方涉及到了替换操作

其中

a[i] = a[j];
暂存在初始部分 初始部分已经存在flag里了

a[j] = a[i];
前面发现的大值 直接放到后面来  

a[i] = flag;
最后用flag来填补前面发现大值的坑位  


0 0