利用数组存放实现排序 hodj1425 321MS 2011/08
题意:输入n个数字,要求输出从大到小排序的前m个数
解题技巧:利用大数存储在数组后面,小数存储在前面,倒序输出完成从大到小排序
直接贴代码吧 —_—||
1 #include <iostream> 2 #include <memory> 3 using namespace std; 4 5 const int N = 1000001; 6 int a[N]; 7 int main() 8 { 9 int n,m,max=-1; 10 int temp; 11 while(scanf("%d%d",&n,&m)!=EOF) 12 { 13 int count=0; 14 memset(a,0,sizeof(a[0])*N); 15 for (int i=0;i<n;i++) 16 { 17 scanf("%d",&temp); 18 if (temp>=max) 19 { 20 max = temp; 21 } 22 a[temp+500000] = 1; 23 } 24 int j = max+500000; 25 while (j>=0) 26 { 27 if (a[j]==1) 28 { 29 printf("%d",j-500000); 30 count++; 31 if(count==m) 32 { 33 printf("\n"); 34 break; 35 } 36 else 37 printf(" "); 38 } 39 j--; 40 } 41 } 42 return 0; 43 }