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

本文介绍了一种使用数组进行从大到小排序的技巧,通过将大数存放在数组后面,小数存放在前面,然后倒序输出,实现了快速排序前m个数的方法。代码示例详细展示了如何读取输入的数字,利用数组存储并排序,最后输出排序后的结果。
摘要由CSDN通过智能技术生成

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

 

转载于:https://www.cnblogs.com/lmei/p/3207701.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值