输入包括两行,第一行是一个正整数N(N<=1000000),表示理工大共N个美女。第二行有N个正整数分别表示N位美女的身高,每个正整数的值不会超过10^9。 (输入数据之间会用空格隔开)

#include<stdio.h>
int a[1100001];
int pp(int low,int h)
{
 int key=a[low];
 while(low < h)
 {
  while(key <= a[h] && low < h)  h--;
  a[low]=a[h];
  while(key >= a[low] && low < h) low++;
  a[h]=a[low];
 }
 a[low]=key;
 return low;
}
void paixu(int low, int h)
{
 if(low>=h)
	 return ;
 int mid=pp(low,h);
 paixu(low,mid-1);
 paixu(mid+1,h);
}
int main()
{
 int i;
 int n;
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  scanf("%d",&a[i]);
 }
 paixu(0,n-1);
 for(i=n-1; i>=0; i--)
 {
     printf("%d", a[i]);
	 if(i>0)
		 printf(" ");
 else
	 printf("\n");
 }
 return 0;
}



posted @ 2014-01-17 11:09  6bing  阅读(654)  评论(0编辑  收藏  举报