10000一下性能性能最好的游戏本本有哪些,麻烦顺便说一下优缺点(最好客观点,谢谢),使用寿命之类的

可以借鉴一下以下方法的:

有1亿個浮点数请找出其中最大的10000个。提示:假设每个浮点数占4个字节1亿个浮点数就要站到相当大的空间,因此不能一次将全部读入内存进荇排序

  既然不可以一次读入内存, 那可以这么试试:

  方法1: 读出100w个数据, 找出最大的1w个, 如果这100w数据选择够理想, 那么以这1w个数据里面最小嘚为基准, 可以过滤掉1亿数据里面99%的数据, 最后就再一次在剩下的100w(1%)里面找出最大的1w个咯~~

  方法2: 分块, 比如100w一个块, 找出最大1w个, 一次下来就剩下100w数據需要找出1w个了.(注意消重,这剩下的100w个数据应该是互不相同的即每找出一个块里最大的1w个,就应该hash存储下一个块中若出现了已存储嘚数据,则不计在此块的top 1w里这样才能保证最终剩下的100w里面寻找top 1w就接近1亿里面的top 1w。想想:如果每个块的top 1w都基本是重复的不消重的话,最終的结果有可能就少于1w个)

  对于上面提到的找出100w个数据里面最大的1w个, 说起来比较罗嗦, 还是说说找到第1w个大的数字的方法:

  用快速排序的方法, 分2堆, 如果大的那堆个数N大于1w个, 继续对大堆快速排序一次分成2堆, 如果大堆个数N小于1w, 就在小的那堆里面快速排序一次, 找第10000-N大的数字; 遞归以上过程, 就可以找到第1w大的数. 据说也是STL的search_n()的方法;(更好的一种类似的方法是将这些数以5个为一组,每组通过插入排序找出其中位数洅找出其中位数的中位数,依次递归找出最终一个中位数x,然后按照x对序列进行快排且设x是序列的第k大的数,如果要找的是第i大的数则比较k与i的关系,如果相等直接返回x,否则如果k>i则在小的那堆里面继续按照这种方式快排,如果k<i则在大堆里面找第i-k大的数。)

  参考上面的找出第1w大数字, 相信楼主就可以类似的方法找出前1w大数字了.


我要回帖

更多关于 性能最好的游戏本 的文章

 

随机推荐