Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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

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
Algorithm 寻找关于快速排序算法复杂性的澄清_Algorithm_Sorting_Quicksort - Fatal编程技术网

Algorithm 寻找关于快速排序算法复杂性的澄清

Algorithm 寻找关于快速排序算法复杂性的澄清,algorithm,sorting,quicksort,Algorithm,Sorting,Quicksort,有人能解释为什么快速排序的最佳运行时不是线性的吗?有没有办法使快速排序的最佳运行时线性化?如果是这样的话,为什么在实践中通常不使用它们呢?你至少应该浏览维基链接。。。他们用图表和动画进行了解释,这很容易理解 快速排序在O(n2)时间内运行,最坏情况为最佳/平均O(n log n)。在实践中,尽管它的最坏情况更高,但它的性能通常优于heapsort和mergesort(最坏情况O(n logn)排序) 除非已经排序,否则排序只能在线性时间内运行,这仅适用于具有最佳案例O(n)的排序。当然,您可以首

有人能解释为什么快速排序的最佳运行时不是线性的吗?有没有办法使快速排序的最佳运行时线性化?如果是这样的话,为什么在实践中通常不使用它们呢?

你至少应该浏览维基链接。。。他们用图表和动画进行了解释,这很容易理解

快速排序在O(n2)时间内运行,最坏情况为最佳/平均O(n log n)。在实践中,尽管它的最坏情况更高,但它的性能通常优于heapsort和mergesort(最坏情况O(n logn)排序)


除非已经排序,否则排序只能在线性时间内运行,这仅适用于具有最佳案例O(n)的排序。

当然,您可以首先检查输入是否已排序,如果已排序,则立即返回。这将产生一个具有线性最佳情况复杂度的算法。但是,最终得到的是“修改的快速排序”,而不是“快速排序”。

快速排序是一种直接比较排序方法。每个这样的方法都在每个步骤上使用二进制描述(即直接比较),以在排序的两个可能结果之间进行分支。N个元素数组的所有可能排序都是N!因此,能够输出每个结果的二叉决策树的最低高度是log(N!),这可以被证明,尽管不是很容易的方式,O(log(N!))=O(N*log(N))。因此,没有一种直接比较排序算法的复杂度可能比这一算法更好


因此,由于快速排序是这种算法的一个例子,它的复杂度永远不会低于O(N*log(N)),因此它不能是线性的。

听起来像是一个“直接问题”*如果你知道我的意思……我不确定你的意思。如果你认为这是家庭作业,我可以向你保证不是。您的任何有效输入都会有所帮助。