爱春之完美: |
网上看到的题目:一道腾讯面试题:从大量数字中取出 top 100 “最近有同事去腾讯面试,其中一个排序算法题:从1亿个数字中取出最大的100个. 我感觉用位图排序是比较合适的.位图排序的特点是用内存空间换取CPU时间.代码如下......” 发帖者的算法过于复杂,并且效率太低。实际上获取了前100个数字后,后一个数字如果比100个数字里最小的还大,就把那个最小的数字替换掉就完事了。1亿个数字,只需走一遍循环就可以了,总耗时不过2秒多点:
题目没有指定数字是什么数字,就使用long型的了。内存消耗也没有什么压力。 |
主 楼 发布于:2018-02-11 18:47:01回复 |
旅行者: |
i3的小机器耗时2秒多:
|
2 楼 发布于:2018-02-11 18:48:31 回复 |
旅行者: |
i5机器耗时2.3秒左右。 由于是单线程,提高不大。 |
3 楼 发布于:2018-02-12 00:35:36 回复 |
旅行者: |
这台电脑用时4秒多,差距相当大。 |
4 楼 发布于:2018-02-13 22:57:05 回复 |
好女人9: |
名花虽有主,我来松松土! |
5 楼 发布于:2018-03-22 06:28:06 回复 |
小哇小苹果: |
亚历(鸭梨)山大 |
6 楼 发布于:2018-05-14 01:49:23 回复 |
愕然: |
春花那堪几度霜,秋月谁与共孤光;痴心若遇真情意,翩翩彩蝶化红妆。 |
7 楼 发布于:2018-10-22 13:18:56 回复 |
思维1: |
人生有风险,入世需谨慎 |
8 楼 发布于:2019-01-09 11:59:39 回复 |
明天我要嫁给谁: |
我是个演员,一看见漂亮MM眼就圆…… |
9 楼 发布于:2019-03-27 11:00:53 回复 |
赖村网: |
,,, |
10 楼 发布于:2019-06-26 14:55:25 回复 |
赖村网: |
这能代表一亿个数字吗? |
11 楼 发布于:2019-06-26 15:31:21 回复 |
旅行者: |
回复 11 楼: 就是随机生成一亿个数字啊,可以代表的 |
12 楼 发布于:2019-06-27 12:09:35 回复 |
旅行者: |
但是一楼的算法有个问题,如果最大的100个数字有重复的,那么就只获取到了其中的一个值,其余的值就没法存了。所以可以考虑维护一个长度为100的数组,每次比较时获取一下最小值,如果大于最小值则替换。由于比较每个数字都要遍历一遍数组,所以效率只有1楼的1%,但是是个简单的可行方案了。另外可以考虑维护一个有序的树形结构,这样可能时间复杂度会低一些。由于数据结构没学好,所以还得补补课啊... |
13 楼 发布于:2019-06-27 12:16:43 回复 |
唇间旳暧昧╮: |
你帅呆了,酷毙了,简直无法比喻了,你头顶锅盖手拎白菜,总以为自己是东方不败,其实你是傻瓜二代! |
14 楼 发布于:2020-02-06 00:25:34 回复 |
广州苹果我是: |
我自横田向天笑,笑完我就去睡觉 |
15 楼 发布于:2021-10-03 13:24:22 回复 |
慈爱妇科: |
好像很牛B的样子 |
16 楼 发布于:2022-03-08 05:04:21 回复 |
冷冷清秋112: |
被人抛弃?受人欺凌?无家可归?不要伤心,不要气馁,即使全世界都嫌弃你,至少还有我们,国营养猪场您温馨的家。 |
17 楼 发布于:2023-01-08 15:04:21 回复 |
情之立场: |
神看见你口渴,便创造了水;神看见你肚饿,便创造了米;神看见你寂寞,所以他创造了我。 |
18 楼 发布于:2023-01-23 22:46:21 回复 |
福州交易网: |
祝你一路顺风,半路失踪;祝你笑口常开,笑死活该;祝你天天开心,两腿抽筋;祝你万事如意,处处碰壁。 |
19 楼 发布于:2024-10-26 05:52:27 回复 |
欧阳那天了: |
佳节到, 送您一个月饼:第 一层财运;第二层幸运;第三层福运;第四层浪漫;中间夹层甜密!祝您天天好心情! |
20 楼 发布于:2025-02-07 02:03:47 回复 |