自学于《啊哈!算法》
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
const int maxn=10000000;
using namespace std;
int a[100005];
void quicklysort(int left,int right)
{
int i,j,temp,t;
if(left>=right)
return ;
temp=a[left];
i=left;
j=right;
while(i!=j)
{
while(i<j&&a[j]>=temp)
j--;
while(i<j&&a[i]<=temp)
i++;
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[left]=a[i];
a[i]=temp;
quicklysort(left,i-1);
quicklysort(i+1,right);
}
int main()
{
int n;
while(cin>>n)
{
for(int i=0; i<n; ++i)
{
cin>>a[i];
}
quicklysort(0,n-1);
int f=1;
for(int i=0; i<n; ++i)
{
if(f)
{
cout<<a[i];
f=0;
}
else
{
cout<<' '<<a[i];
}
}
cout<<endl;
}
return 0;
}
学校的教学版本
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
const int maxn=10000000;
using namespace std;
int a[100005];
void quicklysort(int left,int right)
{
int i,j,temp,t;
if(left>=right)
return ;
temp=a[left];
i=left;
j=right;
while(i!=j)
{
while(i<j&&a[j]>=temp)
j--;
a[i]=a[j];
while(i<j&&a[i]<=temp)
i++;
a[j]=a[i];
//if(i<j)
//{
// t=a[i];
// a[i]=a[j];
// a[j]=t;
//}
}
//a[left]=a[i];
a[i]=temp;
quicklysort(left,i-1);
quicklysort(i+1,right);
}
int main()
{
int n;
while(cin>>n)
{
for(int i=0; i<n; ++i)
{
cin>>a[i];
}
quicklysort(0,n-1);
int f=1;
for(int i=0; i<n; ++i)
{
if(f)
{
cout<<a[i];
f=0;
}
else
{
cout<<' '<<a[i];
}
}
cout<<endl;
}
return 0;
}