求一个算法 给一组整数排序 按照出现的频率大小由高到低排列 相同频率的数字按照数字出现的前后顺序排列 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 steam的groupby orderby 一步到位? 这是要sql还是要代码 想要代码 用java写 定义一个对象X{int num ;//记录此数据 int size;//记录数据出现次数}定义一个List<X>每个数据过来,遍历List<X>,如果等于某个X.num,就将此X.size+1;如果不存在相等的X,则new X,放到List<X>最后面所有数据遍历后,对List<X>,按照X.size进行冒泡排序或者快速排序。整个算法时间复杂度 n三次方(冒泡) 或者 n二次方logn (快排) 具体采用什么算法,与原数据量的大小、分布是否均匀等有很大的关系。如果数据量不大的话或者是分布在很小的范围,则一开始用hash方式进行存储,然后在转换成列表进行排序,时间复杂度接近n+n*logn如果数据量很大(亿级别以上且数据相对分散),则采用数组进行存储,下标就是数字,统计完了次数之后然后再排序。这种做法对内存消耗比较大。时间复杂度依然是接近n+n*logn 读取XML文件时出现异常,Connection reset Nested exception: Connection reset 新手 问题麻烦看下 谢谢了 flex3.0文本输入问题 急求高手解答! 空闲时间做的一个网站,可以查薪水、面经、公司评论等,求大家的指点和拍砖 EJB 数据库连接问题? struts的奇怪問題! = =!又是SSH的问题 jsp程序发布到tomcat服务器为什么找不到sqlserver驱动程序. 我发现了jdom的bug!!!!! 验证码时好时坏? 关于spring boot重定向的问题 Java中怎么解决C盘下无法自动创建文件夹问题
定义一个List<X>
每个数据过来,遍历List<X>,如果等于某个X.num,就将此X.size+1;如果不存在相等的X,则new X,放到List<X>最后面
所有数据遍历后,对List<X>,按照X.size进行冒泡排序或者快速排序。整个算法时间复杂度 n三次方(冒泡) 或者 n二次方logn (快排)
如果数据量很大(亿级别以上且数据相对分散),则采用数组进行存储,下标就是数字,统计完了次数之后然后再排序。这种做法对内存消耗比较大。时间复杂度依然是接近n+n*logn