由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 面试中举例常见的高效排序算法, 为什么都举quicksort和mergesort, 很少说heapsort呢
相关主题
heap sort的缺点是什么?和quick sort比问道排序题
问一个排序的问题heapifying an unordered array
junior level的工作对算法要求有多高?问两道google面试题
哪位大写给说说 何时用 merge sort, 何时用 quick sort, 何时 heap sort备考google onsite, 讨论堆排序的时间复杂度
算法题:min heap inplace变 BST菜鸟刷题两个星期了。。。
~~~~~~~~问个G家的题~~~~~~~~~~~一道面试题
老纳跟风顶风作案,贡献一道g家上周的题目其实我很想知道, 多少软工能25分钟内把heapsort写下
算法题:合并两个排序二叉树谁知道STL sort用的啥算法?
相关话题的讨论汇总
话题: quicksort话题: heapsort话题: mergesort话题: 排序话题: 算法
进入JobHunting版参与讨论
1 (共1页)
m***p
发帖数: 86
1
quicksort时间最差是O(n^2)
mergesort空间上需要O(n)
heapsort时间最差是O(nlogn),空间只需要O(1),为什么提到的频率没有上面两个高呢?
是比较复杂还是其他什么原因?
w**2
发帖数: 8
2
1.quicksort 随机化后 nlogn 时间
2.mergesort 链表上 O(1)空间
3.heapsort 需要O(n)辅助空间 除非只是打印
r******l
发帖数: 10760
3
复杂度跟实际速度是两码事。quick sort平均来说是最快的。

?

【在 m***p 的大作中提到】
: quicksort时间最差是O(n^2)
: mergesort空间上需要O(n)
: heapsort时间最差是O(nlogn),空间只需要O(1),为什么提到的频率没有上面两个高呢?
: 是比较复杂还是其他什么原因?

l*******b
发帖数: 2586
4
heapsort 可以 in place 呀

【在 w**2 的大作中提到】
: 1.quicksort 随机化后 nlogn 时间
: 2.mergesort 链表上 O(1)空间
: 3.heapsort 需要O(n)辅助空间 除非只是打印

e********3
发帖数: 18578
5
quicksort也可以in place.

【在 l*******b 的大作中提到】
: heapsort 可以 in place 呀
y*******g
发帖数: 6599
6
quicksort操作的是local memory

?

【在 m***p 的大作中提到】
: quicksort时间最差是O(n^2)
: mergesort空间上需要O(n)
: heapsort时间最差是O(nlogn),空间只需要O(1),为什么提到的频率没有上面两个高呢?
: 是比较复杂还是其他什么原因?

p*****2
发帖数: 21240
7
大牛 听说你最近很美?

【在 y*******g 的大作中提到】
: quicksort操作的是local memory
:
: ?

j****y
发帖数: 684
8
heapsort 很多修改index,在内存里跳来跳去
一堆cache miss,能快就鬼了。

?

【在 m***p 的大作中提到】
: quicksort时间最差是O(n^2)
: mergesort空间上需要O(n)
: heapsort时间最差是O(nlogn),空间只需要O(1),为什么提到的频率没有上面两个高呢?
: 是比较复杂还是其他什么原因?

V*********r
发帖数: 666
9
堆排序很常用啊。之所以在“面试”中不常出,准确的说法是不常考其实现,无非两个
原因:
1. 白板篇幅有限,heapify/siftup/siftdown全写完白板容不下。
2. quicksort/mergesort变种很多,可inplace可外借空间,可迭代可递归(比如考你
非inplace的迭代式mergesort),是分治思想的典型代表,容易形成考点。而且其思想
适用于任何线性表(不管是数组还是链式存储),也可扩展到树形存储。考点密集不奇
怪。

?

【在 m***p 的大作中提到】
: quicksort时间最差是O(n^2)
: mergesort空间上需要O(n)
: heapsort时间最差是O(nlogn),空间只需要O(1),为什么提到的频率没有上面两个高呢?
: 是比较复杂还是其他什么原因?

J*****a
发帖数: 4262
10
quick sort在实践中是最快的,你可以看看相关文献
而且quicksort有很多变种,改变pivot的选取,或者三头并进,能大大提高最坏情况的
性能
L***s
发帖数: 1148
11
“实践中”要考虑的情况可就多了,比如locality of reference、输入数据已经部分
有序、排序稳定性、内存不够要外排序、多机并行排序 等等,工程中的默认实用排序
一般都是mergesort的变种,也就是两轮或两轮以上的混合排序:最后一轮mergesort,
前面几轮找sorted runs to be merged的方法八仙过海各显神通(比如简单地插入排序
、双pivot快排等等)。
楼主明显是说面试的情况,不必考虑这么多工程上的因素。

【在 J*****a 的大作中提到】
: quick sort在实践中是最快的,你可以看看相关文献
: 而且quicksort有很多变种,改变pivot的选取,或者三头并进,能大大提高最坏情况的
: 性能

t***t
发帖数: 6066
12
quicksort是O(nlogn)算法中常数最小的。
G*********n
发帖数: 53
13
因为 Heapsort 会有大量的 cache 的in & out, 对cache利用不充分,所以用的最少
。对于 mergesort 需要分配一个 新的array来help,所以速度也没有比quick sort快
。相对来说,quicksort最快
1 (共1页)
进入JobHunting版参与讨论
相关主题
谁知道STL sort用的啥算法?算法题:min heap inplace变 BST
为什么quicksort会比heapsort快?~~~~~~~~问个G家的题~~~~~~~~~~~
问一道programming peals上的题老纳跟风顶风作案,贡献一道g家上周的题目
求storm8面经。。算法题:合并两个排序二叉树
heap sort的缺点是什么?和quick sort比问道排序题
问一个排序的问题heapifying an unordered array
junior level的工作对算法要求有多高?问两道google面试题
哪位大写给说说 何时用 merge sort, 何时用 quick sort, 何时 heap sort备考google onsite, 讨论堆排序的时间复杂度
相关话题的讨论汇总
话题: quicksort话题: heapsort话题: mergesort话题: 排序话题: 算法