|
|
1
12
|
|
|
2
10
|
|
|
3
9
这很简单,只要在学校里玩一玩,就不会以一团乱麻收场: “如果你左边的邻居比你高,请换位。” |
|
|
4
9
编程更容易。即使是经验丰富的程序员也会犯快速排序、堆排序和合并排序错误。它也不会在堆栈空间中消耗额外的log(n)到O(n)。尽管可以非递归地实现堆排序。 基本上算法是这样的 O(n^2)最坏情况性能 基本上这是慢。。。。
O(n*lg(n)) 一般来说,在你对输入一无所知的情况下,最快的排序算法用于一般排序(这实际上已经被证明是在不了解任何输入的情况下进行排序的下限):
O(n)排序
**其他种类:** 还有很多其他种类的。像贝壳之类的东西。。。以上这些比较常见。
还有一件事需要注意,那就是排序是否稳定。基本上,如果你有A,C,D,C,G,C,每个C会按顺序出现,或者最后一个C会出现在另一个C之前。如果要对多个字段进行排序,这一点很重要。如果你先按名字再按姓氏排序(亚历克斯·罗德里格斯,简·罗德里格斯,贝蒂·罗德里格斯)……你会得到第一个排序(亚历克斯·R,贝蒂·R,简·R)。第二种如果它是稳定的,你会得到亚历克斯R,贝蒂R,简R。如果它不稳定,你可以得到任何订单。一般来说,气泡和插入都很容易实现稳定。堆排序和快速排序通常不稳定。合并排序很容易实现,因为它是稳定的。这也会影响选择。。。。 另外,如果你不知道O(n)表示法,基本上它是计算量的上限。给你一个想法,排序20个项目,你看大约400个操作与O(n^2),而与O(n*lg(n))你看20*4.3约86个操作。而对于lg(n)来说,你看到的大约是4.3。不管怎样,数字越大,这个差别就越大。10000个项目表示n*lg(n)的133000个操作和n^2的100000000个操作。对于大型列表,使用较慢的排序开始变得不切实际。当然O(n)只有10000。业务的数量并不完全是这些数字,但它们说明了业务增长的速度。即仅用lg(n)你就可以从4.3增长到133000。n从20增长到10000,n*lgn从86增长到133000,n^2从400增长到100000000。所以基本上,当你的单子越来越大,速度越慢的人会达到他们做不到的程度,但是速度越快的人可以做到。 不管怎样,把它放在上下文中,我看到了气泡排序的以下优点:
|
|
|
5
7
|
|
6
7
泡泡港是 更快 比快速排序(以及几乎所有其他排序)更重要 已经 排序列表;-) QuickSort 的 最佳案例 BubbleSort 是O(N)! 除了这个异国情调,我同意唐纳德·克努斯的观点, 计算机编程艺术,第3卷:分类和搜索 : |
|
|
7
3
实际上,除了非常小的列表之外,您永远不会使用它。对于足够小的列表,较低的开销可以使其优于更高级的排序。我从来不会用它做超过一打的东西。 |
|
|
Rewind · 同时搜索最大值/最小值的操作顺序 1 年前 |
|
|
badbee · 使用xsl:sort时保留未排序元素的问题 1 年前 |
|
|
josepmaria · Pandas顺序列,按对列出 1 年前 |
|
|
BTBts · Python3文件名的字母数字排序[重复] 1 年前 |
|
|
Paul-ET · 对树状图应用程序发送的第一列进行排序失败 1 年前 |
|
VonDerHase · 从列表中删除特定值,Python 1 年前 |
|
|
Nico44044 · JS对数组进行排序,数组末尾为null和空值 1 年前 |