找女朋友
Time Limit: 15ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
山东理工大学有很多学生,当然也有很多美女,机械实验班的学委(外号:大王八)很想找个女朋友,但他想找个身高和自己相配的女生坐女朋友,现有理工大N个美女的身高数据,但由于N的值较大,为了尽快找到合适的女友,大王八想请你帮他完成这N个美女的身高排序,按降序排列。
输入
输入包括两行,第一行是一个正整数N(N<=1000000),表示理工大共N个美女。第二行有N个正整数分别表示N位美女的身高,每个正整数的值不会超过10^9。 (输入数据之间会用空格隔开)
输出
输出只有一行,为这N个数的降序序列,数与数之间用空格隔开。
示例输入
5 1 3 2 5 4
示例输出
5 4 3 2 1
提示
来源
示例程序
- 提交
- 状态
- 讨论
#include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <algorithm> using namespace std; int a[1000000]; int pp(int l,int r) { int i=l,j=r,x=a[l]; while(i<j) { while(i<j && a[j]>=x)j--; a[i]=a[j]; while(i<j && a[i]<=x)i++; a[j]=a[i]; } a[i]=x; return i; } void paixu(int l,int r) { if(l>=r) return; int x=pp(l,r); paixu(l,x-1); paixu(x+1,r); } int main() { int n,i,j,k,t; while(scanf("%d",&n)!=EOF) { for(i=0;i<n;i++) { scanf("%d",&a[i]); } paixu(0,n-1); for(i=n-1;i>=0;i--) { if(i==n-1) { printf("%d",a[i]); } else { printf(" %d",a[i]); } } printf("\n"); } return 0; }