Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.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
Algorithm 为什么冒泡、插入和选择排序具有相同的大O?_Algorithm_Big O - Fatal编程技术网

Algorithm 为什么冒泡、插入和选择排序具有相同的大O?

Algorithm 为什么冒泡、插入和选择排序具有相同的大O?,algorithm,big-o,Algorithm,Big O,正如标题所问,为什么插入、冒泡和选择排序具有相同的大o?在我的算法课程中,我们已经介绍了四种算法——上面的算法和合并排序,为什么还要使用上面的任何一种算法来代替合并排序?虽然它们是不同的算法,但它们具有相同的渐近复杂性,因为在某种程度上,每种算法都会通过一个长度为n的列表进行两次遍历。关键是Big-O是最坏情况下的性能度量。在最坏的情况下,插入排序是O(n^2),但在最好的情况下,当列表已经排序时,它将变成O(n)。不同的排序算法具有不同的优势,需要超出big-o复杂性的分析 也就是说,使用nl

正如标题所问,为什么插入、冒泡和选择排序具有相同的大o?在我的算法课程中,我们已经介绍了四种算法——上面的算法和合并排序,为什么还要使用上面的任何一种算法来代替合并排序?

虽然它们是不同的算法,但它们具有相同的渐近复杂性,因为在某种程度上,每种算法都会通过一个长度为n的列表进行两次遍历。关键是Big-O是最坏情况下的性能度量。在最坏的情况下,插入排序是O(n^2),但在最好的情况下,当列表已经排序时,它将变成O(n)。不同的排序算法具有不同的优势,需要超出big-o复杂性的分析


也就是说,使用nlog(n)排序几乎总是更好的,而泡泡排序的主要功能可能是向人们介绍排序算法的概念

虽然它们是不同的算法,但它们具有相同的渐近复杂性,因为在某种程度上,每个算法通过长度为n的列表进行两次传递。关键是Big-O是最坏情况下的性能度量。在最坏的情况下,插入排序是O(n^2),但在最好的情况下,当列表已经排序时,它将变成O(n)。不同的排序算法具有不同的优势,需要超出big-o复杂性的分析


也就是说,使用nlog(n)排序几乎总是更好的,而泡泡排序的主要功能可能是向人们介绍排序算法的概念

尽管一些排序算法(如冒泡排序)对于大量项目来说非常慢,但当您只有少量项目时,它们非常快,部分原因是它们非常简单。当项目已接近正确位置时,气泡排序或插入排序也很有用。通常情况下,一个好的排序算法会使用一种技术将项目按课程规模进行排序,然后使用另一种算法进行精细排序。

尽管一些排序算法(如气泡排序)对于大量项目非常慢,但当您只有少量项目时,它们非常快,部分原因是它们太简单了。当项目已接近正确位置时,气泡排序或插入排序也很有用。通常情况下,一个好的排序算法会使用一种技术将项目按课程规模进行排序,然后使用另一种算法进行精细规模排序。

这是这里常见的问题之一。Big-O表示法是一种测量算法理论界的方法,在最佳情况下,你可以得到常数时间O(1),即使这种情况很少发生,因此是最佳情况。这三种算法具有相同的大O的原因是它们都以相同的方式处理排序问题,具有相同的大O并不意味着这些算法在工作方式上是完全等效的,即使过程是相似的。从纯学术的角度来看,教授这些课程的原因是为了让你能够从历史中学习,而不是认为你提出泡沫排序法会“震惊世界”。它还用于显示看似简单的概念,即排序,如何被证明比“幼稚”方法产生的问题复杂得多。

这是这里常见的问题之一。Big-O表示法是一种测量算法理论界的方法,在最佳情况下,你可以得到常数时间O(1),即使这种情况很少发生,因此是最佳情况。这三种算法具有相同的大O的原因是它们都以相同的方式处理排序问题,具有相同的大O并不意味着这些算法在工作方式上是完全等效的,即使过程是相似的。从纯学术的角度来看,教授这些课程的原因是为了让你能够从历史中学习,而不是认为你提出泡沫排序法会“震惊世界”。它还用于显示看似简单的概念,即排序,如何被证明比“幼稚”方法产生的结果要复杂得多。

我不确定您对这个问题的理解。你想知道这些算法有什么共同点使得它们都具有相同的复杂性,或者你想知道为什么复杂性不是其他东西?你在这里问了两个不同的问题1)为什么冒泡、插入和选择是O(n^2)和2)它们的有效用例是什么?在你自己研究之后,单独询问这些问题。投票结束时过于宽泛。我不确定你对这个问题的理解。你想知道这些算法有什么共同点使得它们都具有相同的复杂性,或者你想知道为什么复杂性不是其他东西?你在这里问了两个不同的问题1)为什么冒泡、插入和选择是O(n^2)和2)它们的有效用例是什么?在你自己研究之后,单独询问这些问题。投票结束时的范围太广。非常好的措辞和放置,谢谢。非常好的措辞和放置,谢谢。实际上,插入/选择排序在实践中非常有用,可以在对“小”数组进行排序时使用,作为递归O(logn)排序的基本情况,因为一旦n变得足够小,当n可以放入本地缓存时,它们实际上会更快(当N较小时)可以使用插入排序。TimSort中使用了类似的思想,即N logn,直到N变小,然后切换N^2算法。实际上,插入/选择排序在实践中非常有用,在对“小”数组进行排序时用作递归O(logn)的基本情况排序,因为当n变得足够小时,当n可以放入本地缓存时(w