题目描述
给定N(N≤10^5)个整数,要求用快速排序对数据进行升序排列,注意不得使用STL。
input
8
49 38 65 97 76 13 27 49
output
13 27 38 49 49 65 76 97
代码
#include<iostream>
using namespace std;
void func(int a[],int l,int r)
{
int k = a[l],i=l,j=r;
if(l>=r)
return;
while(i<j)
{
while(a[j]>=k && i<j)
j--;
a[i] = a[j];
while(a[i]<=k && i<j)
i++;
a[j] = a[i];
}
a[i] = k;
func(a,l,i-1);
func(a,i+1,r);
}
int main()
{
int i,n,a[100000];
while(cin>>n)
{
for(i=0; i<n; i++)
{
cin>>a[i];
}
func(a,0,n-1);
for(i=0; i<n; i++)
{
i==0?cout<<a[i]:cout<<" "<<a[i];
}
cout<<endl;
}
}