线性vs插入vs二进制vs合并排序

时间:2014-02-19 03:26:36

标签: sorting complexity-theory

所以我知道线性的O(N)是n,插入是n ** 2,二进制是log(n),合并是nlogn

所以Merge Sort是大型列表的最佳搜索。上面哪一个最适合小清单,即多小?感谢

2 个答案:

答案 0 :(得分:2)

你的事实错了,

没有任何东西叫线性排序。

插入排序为O(N ^ 2)

没有什么叫做二元排序

虽然可能是堆排序为O(NlogN)

MergeSort是O(NlogN)

QuickSoty是O(NlogN)

如果元素数量少于7

,最好从合并排序切换到插入排序

如果元素数量少于13

,最好从快速排序切换到插入排序

答案 1 :(得分:1)

你正在混淆排序和搜索算法。线性搜索和二进制搜索是用于在数组中查找值而不是对数组进行排序的算法。插入排序和合并排序是排序算法。

对于小型数组,插入排序往往运行得更快。许多高性能排序例程(包括Python的自适应合并输出)会自动切换到小输入大小的插入排序。切换发生的最佳尺寸通常由测试确定。 Java对Arrays.sort的基本数组版本中的< = 6个元素使用插入排序;我不确定Python的确切行为。