#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来填补前面发现大值的坑位