详细见严蔚敏的数据结构书中的章节
#include<iostream>
#include<vector>using namespace std;
int position(vector<int> &vec,int l,int r)
{
int tmp=vec[l];
int low=l,high=r;
while(low!=high)
{
while (low!=high&&tmp<=vec[high])
{
high--;
}
vec[low]=vec[high];
while (low!=high&&tmp>=vec[low])
{
low++;
}
vec[high]=vec[low];
}
vec[low]=tmp;
return low;
}
void myqsort(vector<int> &vec,int l,int r)
{
if(l<r)
{
int partion=position(vec,l,r);
myqsort(vec,l,partion-1);
myqsort(vec,partion+1,r);
}
}
int main()
{
int n;
cin>>n;
vector<int> vec(n);
for (int i=0;i<n;i++)
{
cin>>vec[i];
}
myqsort(vec,0,n-1);
for (int i=0;i<n;i++)
{
cout<<vec[i]<<" ";
}
cout<<endl;
}
/*
7
1 9 2 1 2 0 23
8
1 2 3 4 9 8 5 4
*/