Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 为什么插入排序O(n^2)在排序小数组~7个元素时更好。与O(nlogn)排序算法(如快速排序和合并排序)相比?_Sorting_Quicksort_Mergesort_Insertion Sort - Fatal编程技术网

Sorting 为什么插入排序O(n^2)在排序小数组~7个元素时更好。与O(nlogn)排序算法(如快速排序和合并排序)相比?

Sorting 为什么插入排序O(n^2)在排序小数组~7个元素时更好。与O(nlogn)排序算法(如快速排序和合并排序)相比?,sorting,quicksort,mergesort,insertion-sort,Sorting,Quicksort,Mergesort,Insertion Sort,我所看到的: 首先,我读了另外两篇文章 但是上面的答案对我来说不够具体 从这两篇文章的回答中,他们主要指出合并排序和快速排序可能会很慢,因为递归函数调用会带来额外的开销。但我想知道具体的阈值7是如何设置的 我的问题: 我想知道为什么截线大约是7个元素,其中二次排序算法(如插入排序)比O(nlogn)排序算法(如快速排序或合并排序)快 在小的子阵列上使用插入排序。Mergesort对于小型子阵列的开销太大 对~7个元素进行截断到插入排序 这是我从普林斯顿大学得到的,我认为这是一个很有声望的

我所看到的: 首先,我读了另外两篇文章

  • 但是上面的答案对我来说不够具体

    从这两篇文章的回答中,他们主要指出合并排序和快速排序可能会很慢,因为递归函数调用会带来额外的开销。但我想知道具体的阈值7是如何设置的

    我的问题:

    我想知道为什么截线大约是7个元素,其中二次排序算法(如插入排序)比
    O(nlogn)
    排序算法(如快速排序或合并排序)快

    • 在小的子阵列上使用插入排序。Mergesort对于小型子阵列的开销太大
    • 对~7个元素进行截断到插入排序
    这是我从普林斯顿大学得到的,我认为这是一个很有声望的消息来源。请参见第11张幻灯片上的“合并排序:实际改进”部分


    如果你的答案包括数学证明的例子,我将不胜感激。

    Big-O只注意到当n变大时占主导地位的因素。它忽略了常数因子和较小的项,这些项几乎总是存在的,当n很小时,它们更为重要。因此,Big-O对于比较只需处理微小输入的算法几乎毫无用处

    例如,可以有一个O(n logn)函数,其时间图类似于
    t=5n logn+2n+3
    ,还有一个O(n^2)函数,其时间图类似于
    t=0.5n^2+n+2


    比较这两张图,你会发现,尽管有Big-O,O(n^2)函数会稍微快一点,直到
    n
    达到大约13。

    这里要记住的关键是Big-O是算法的扩展方式,而不是它的速度。你提供的@JimMischel的可能重复内容谈到了这个概念。在这里,我想知道7的门槛是如何设定的。阅读答案的最后一段。根据操作环境的不同,该数字可以大于或小于7。对任何一台电脑来说,唯一确定的方法就是进行实验。7是一个很好的估计,基于经验结果,以及两种算法中常数因子的比较。好吧,我相信。这是你写给吉姆的一个很好的答案,也是我正在寻找的答案。我应该把你的答案链接起来,然后结束我的问题吗?我想知道为什么投票后的总票数是负数。用大O表示法,我们可以说,
    O(n^2)
    ,增长速度比
    O(n log n)
    快。如果我们最终为n绘制这些
    O(n^2)
    可以克服
    O(n log n)
    中n的特定值。