排序算法快速排序vs插入排序



快速排序是一种O(nlog(n))排序算法。这是否意味着它总是比插入排序快而插入排序是一个O(n2)算法?为什么/为什么不?

在极端情况下,快速排序和插入排序实际上都具有与O(n)相同的性能。对于已经排序的集合进行插入排序,插入新元素最多需要O(n)比较,并且插入只需要O(1)。快速排序的最坏情况是,分区总是导致一个元素后面跟着集合的其余部分。如果这种情况一直持续下去,那么在这种最坏情况下的快速排序也可以在O(n)中运行。

然而,在一般情况下,我们期望快速排序将执行O(n*lgn),插入排序将执行O(n^2)

根据系统的不同,对于包含16到96个元素的小数组,插入排序可以更快。对于<= 32个元素,Visual Studio从快速排序或归并排序切换到插入排序。

最新更新