此算法的时间复杂度为最坏情况下O(n2),期望时间复杂度为O(nlgn)。
#include<iostream>
#include<vector>using namespace std;
void swap(int &i,int &k)
{
int temp=i;
i=k;
k=temp;
}
int Partition(vector<int> &vec,int q,int r)
{
int x=vec[r];
int i=q-1;
for(int j=q;j<r;j++)
{
if(vec[j]<=x)
{
i++;
swap(vec[j],vec[i]);
}
}
swap(vec[i+1],vec[r]);
return i+1;
}
void QuickSort(vector<int> &vec,int q,int r)
{
if(q<r)
{
int p=Partition(vec,q,r);
QuickSort(vec,q,p-1);
QuickSort(vec,p+1,r);
}
}
int main()
{
vector<int> vec;
int num;
while(cin>>num)
{
vec.push_back(num);
}
int size=vec.size();
QuickSort(vec,0,size-1);
for(auto iter=vec.begin();iter<vec.end();iter++)
{
cout<<*iter<<" ";
}
cout<<endl;
}