avatar
一个查找算法题# JobHunting - 待字闺中
m*r
1
【 以下文字转载自 Programming 讨论区 】
发信人: mindreader (摩登原始人), 信区: Programming
标 题: 一个查找算法题
发信站: BBS 未名空间站 (Thu Aug 26 15:21:14 2010, 美东)
如何在一个大数组里的几个子数组中(序号不一定相连,比如2-30, 54-200)找出最
大的N个数,N<5,要求时间最快,不要求排序。
N=1 我的解法是利用下标把数分成奇偶两组,每次循环比较一次,然后比较最大的两个
数谁大,但是 N>2以后还能如此类似吗?
avatar
h*6
2
这种题用堆可以解吧。最大的 N 个数用最小堆,最小的 N 个数用最大堆。
avatar
f*5
3
N=1时直接求跟你的做法有什么区别?

【在 m********r 的大作中提到】
: 【 以下文字转载自 Programming 讨论区 】
: 发信人: mindreader (摩登原始人), 信区: Programming
: 标 题: 一个查找算法题
: 发信站: BBS 未名空间站 (Thu Aug 26 15:21:14 2010, 美东)
: 如何在一个大数组里的几个子数组中(序号不一定相连,比如2-30, 54-200)找出最
: 大的N个数,N<5,要求时间最快,不要求排序。
: N=1 我的解法是利用下标把数分成奇偶两组,每次循环比较一次,然后比较最大的两个
: 数谁大,但是 N>2以后还能如此类似吗?

avatar
m*r
4
快一些,循环次数少,流水线易优化。

【在 f*********5 的大作中提到】
: N=1时直接求跟你的做法有什么区别?
avatar
f*5
5
怎么快?
比较次数少?
举个例子说具体点吧,谢谢

【在 m********r 的大作中提到】
: 快一些,循环次数少,流水线易优化。
avatar
m*r
6
循环次数少,每次下标加2,用两个指针分别从开始两个数和后面的比较,最后比较两
组的最大值。


【在 f*********5 的大作中提到】
: 怎么快?
: 比较次数少?
: 举个例子说具体点吧,谢谢

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。