ACM -- 算法小结(一)利用数组存放实现排序

利用数组存放实现排序    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 }
View Code

 

posted @ 2013-07-22 23:28  lmei  阅读(261)  评论(0编辑  收藏  举报