除了sort,你还会什么

Time Limit: 1000/500ms (Java/Others)

Problem Description:

  1. 给出若干人的年龄(1~100之间的整数),把它们按照从小到大的顺序输出。

Input:

  1. 输入包含多组测试数据。每组数据的第一行为一整数 n,(0<n<=2 000 000),即居民总数;下一行输入 n 个整数,表示各居民的年龄。(输入文件约有20 MB,而内存限制只有2 MB,除了sort(),你还会什么...)

Output:

  1. 对于每一组数据,按照从小到大的顺序输出各居民的年龄。相邻年龄用空格隔开。

Sample Input:

  1. 3
  2. 56 56 56
  3. 5
  4. 99 91 89 63 91

Sample Output:

  1. 56 56 56
  2. 63 89 91 91 99
    解题思路:题目中给出n的最大值为2*10^6,也就是直接调用sort函数的话,会超时,因为其时间复杂度是O(nlogn),但是给出的年龄范围只有1~100,相对n来说很小,也就是说我们可以利用一个数组来存相同年龄的人数,然后从1~100顺序遍历输出即可,注意要用C语言的输入输出,不然会超时!!!
    AC代码:
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int n,x,a[];
  6. while(~scanf("%d",&n)){
  7. memset(a,,sizeof(a));
  8. for(int i=;i<=n;++i){
  9. scanf("%d",&x);a[x]++;
  10. }
  11. for(int i=,m=;i<=;++i){
  12. for(int j=;j<=a[i];++j){
  13. ++m;printf("%d%s",i,m<n?" ":"\n");
  14. }
  15. }
  16. }
  17. return ;
  18. }

也可以使用优先队列:这里了解一下:priority_queue<Type, Container, Functional>Type为数据类型, Container为保存数据的容器,Functional为元素比较方式。如果不写后两个参数,那么容器默认用的是vector,比较方式默认用operator>,也就是优先队列是大顶堆,队头元素最大。

AC代码:注意输入输出要用C语言格式,不然真的会超时QAQ。。。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int n,x;
  6. priority_queue<int,vector<int>,greater<int> > q;
  7. while(~scanf("%d",&n)){
  8. while(n--){scanf("%d",&x);q.push(x);}
  9. while(q.size()>){
  10. printf("%d ",q.top());q.pop();
  11. }
  12. printf("%d\n",q.top());q.pop();
  13. }
  14. return ;
  15. }

ACM_排序的更多相关文章

  1. [ACM_模拟] UVA 10881 Piotr's Ants[蚂蚁移动 数组映射 排序技巧]

    "One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one ...

  2. [ACM_模拟] POJ 1094 Sorting It All Out (拓扑排序+Floyd算法 判断关系是否矛盾或统一)

    Description An ascending sorted sequence of distinct values is one in which some form of a less-than ...

  3. ACM_小凯的排序(字符串)

    小凯的排序 Time Limit: 2000/1000ms (Java/Others) Problem Description: 调皮的小凯喜欢排序,拿到什么东西都要排一下序.现在他觉得单一的递增递减 ...

  4. ACM_绝对值排序

    Why Males And Females Apart? Time Limit: 2000/1000ms (Java/Others) Problem Description: In so many o ...

  5. javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈

    Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...

  6. iOS可视化动态绘制八种排序过程

    前面几篇博客都是关于排序的,在之前陆陆续续发布的博客中,我们先后介绍了冒泡排序.选择排序.插入排序.希尔排序.堆排序.归并排序以及快速排序.俗话说的好,做事儿要善始善终,本篇博客就算是对之前那几篇博客 ...

  7. JavaScript实现常用的排序算法

    ▓▓▓▓▓▓ 大致介绍 由于最近要考试复习,所以学习js的时间少了 -_-||,考试完还会继续的努力学习,这次用原生的JavaScript实现以前学习的常用的排序算法,有冒泡排序.快速排序.直接插入排 ...

  8. [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序

    用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html  目录 马桶排序(令人 ...

  9. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

随机推荐

  1. [bzoj3238][Ahoi2013]差异_后缀数组_单调栈

    差异 bzoj-3238 Ahoi-2013 题目大意:求任意两个后缀之间的$LCP$的和. 注释:$1\le length \le 5\cdot 10^5$. 想法: 两个后缀之间的$LCP$和显然 ...

  2. P1230 智力大冲浪 洛谷

    https://www.luogu.org/problem/show?pid=1230 题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每 ...

  3. Remove Element(第一种方法参考别人)

    Given an array and a value, remove all instances of that value in place and return the new length. T ...

  4. 用JQ实现基础的添加,插入,删除功能。

    在eclipse里面运行代码即可,如果您是其他应用,请选择对您有帮助的代码即可,如果有写错或不懂的地方请联系QQ:1633420056,谢谢,祝学习进步 <!DOCTYPE html>&l ...

  5. io计算

    http://www.cnblogs.com/yalong_xiang/archive/2011/11/15/2249530.html ぬ儱←OWEN★   windows下如何查看磁盘IO性能 复制 ...

  6. MongoDB小结03 - insert、remove

    连接MongoDB(bin目录下) ./mongo 如果觉得shell里空空的可以输入help,在刷屏的同时大致了解下有哪些方法 help 现在咱们还没有数据库,咱们创建一个,任性起名:templat ...

  7. tomcat8.5.20配置https

    一.使用cmd下生成证书: d: cd d:/java/jdk/jdk1.8 keytool -v -genkey -alias tomcat -keyalg RSA -keystore D:\jav ...

  8. NYOJ 题目42 一笔画问题(欧拉图)

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描写叙述 zyc从小就比較喜欢玩一些小游戏.当中就包含画一笔画.他想请你帮他写一个程序.推断一个图是否可以用一笔画下 ...

  9. javascript statically scope

    在javascript 里面, 函数中使用的未定义的变量,会默认变为全局的变量. 而通过 var 这个关键字定义的变量,就是局部变量. As far as the output is concerne ...

  10. Linux 中浏览网页的命令行

    Linux系统环境的WEB网站浏览器工具,常用的有w3m.Links.Lynx三个工具 第一.w3m w3m文本浏览器是基于GPL协议发布的且支持表格.颜色.SSL连接以及内链图像,因速度快而著称. ...