排序算法中,找出前m个小(或大)数据,时间复杂度最小的是?

WN2007 2009-10-31 11:31:44
排序算法中,找出前m个数据,时间复杂度最小的是?
...全文
248 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
CodeSpy 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 codespy 的回复:]
参见此贴
http://topic.csdn.net/u/20090730/20/f114e5d7-a6c9-4f2e-bd19-ccb028521c63.html
[/Quote]
http://topic.csdn.net/u/20090730/20/f114e5d7-a6c9-4f2e-bd19-ccb028521c63.html
CodeSpy 2009-10-31
  • 打赏
  • 举报
回复
参见此贴
http://topic.csdn.net/u/20090730/20/f114e5d7-a6c9-4f2e-bd19-ccb028521c63.html
cxxer 2009-10-31
  • 打赏
  • 举报
回复
堆排序
do_fork 2009-10-31
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wn2007 的回复:]
是的 看哪个排序算法的时间复杂度最小 在这种情况下
[/Quote]

找前m个大小的数据,一般不需要排序,排序就慢了
WN2007 2009-10-31
  • 打赏
  • 举报
回复
是的 看哪个排序算法的时间复杂度最小 在这种情况下
太乙 2009-10-31
  • 打赏
  • 举报
回复
何谓找出前n个数据、??是找出前n个最小数据么?
十八道胡同 2009-10-31
  • 打赏
  • 举报
回复
堆排序 找到m个就不找了
n*long(n)
heis07w 2009-10-31
  • 打赏
  • 举报
回复
可建一m元素堆,再遍历数组(n-m)个元素一次,每次若比堆中最小元素小,入堆换出堆中最大元素,出入堆耗时一些。可参见STL的实现。但如果m较小,这个算法还不如选择法部分排序。
最快应该是先用单边递归partition找出第m个数,用时O(n),再用一次partition,见算法导论第九章。
mengde007 2009-10-31
  • 打赏
  • 举报
回复
堆排序足矣;时间复杂度:N*log2(m);

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧