我最近阅读了一篇文章,讨论了算法的计算复杂性。 作者提到“为什么插入排序比小型案例的快速排序和冒泡排序更快”。有人可以对此做出一些解释吗?
有人知道我上面提到的每种排序算法的实际复杂性吗?
答案 0 :(得分:3)
考虑两个复杂性函数:
F(X)= X ^ 2
G(X)= 4 * X * ln(X)
F(3)= 9
G(3)= 13
所以算法F赢了3个项目。但是:
F(100)= 10,000
G(100)= 1,842
因此,算法G赢得了100个项目。
插入排序的复杂性类似于F(X)。快速排序的复杂性就像G(X)。
答案 1 :(得分:0)
如果列表已经排序,则quicksort需要通过所有递归步骤才能获得大小为1的n个列表。这些都需要时间。但插入排序将迭代列表一次,并发现它已完成。对于这种情况,这是最快的。
当列表很小时,进行递归调用和查找透视值等的开销比插入排序中使用的迭代过程慢得多。
答案 2 :(得分:0)
每种排序算法的实际复杂性如下:
O(N ^ 2), O(N), O(N ^ 2)
O(N ^ 2), O(N log N), O(N log N)
O(N ^ 2), O(N), O(N ^ 2)