Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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/2/image-processing/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 为什么快速排序在每个递归级别进行n次比较?_Algorithm - Fatal编程技术网

Algorithm 为什么快速排序在每个递归级别进行n次比较?

Algorithm 为什么快速排序在每个递归级别进行n次比较?,algorithm,Algorithm,我认为它只需要n-1个比较来比较数组中的每个元素,除了pivot,我只是不理解分区部分,如果有任何帮助,我们将不胜感激。 (我的问题与快速排序的大O表示法有关,它是O(nlogn),我不明白为什么它是n?它可能是O((n-1)logn)。我弄明白了,选择轴在每个递归中都算作一个操作,比较是n-1,所以每次我做n个操作时,它都是O(nlogn)!感谢您的回复。以下是马克·艾伦·韦斯(Mark Allen Weiss)的《Java中的数据结构和算法》(第31页)一书中的一段 不要说T(N)=O(2N

我认为它只需要n-1个比较来比较数组中的每个元素,除了pivot,我只是不理解分区部分,如果有任何帮助,我们将不胜感激。
(我的问题与快速排序的大O表示法有关,它是O(nlogn),我不明白为什么它是n?它可能是O((n-1)logn)。

我弄明白了,选择轴在每个递归中都算作一个操作,比较是n-1,所以每次我做n个操作时,它都是O(nlogn)!感谢您的回复。

以下是马克·艾伦·韦斯(Mark Allen Weiss)的《Java中的数据结构和算法》(第31页)一书中的一段

不要说T(N)=O(2N^2)或T(N)=O(N^2+N)。在这两种情况下,正确的形式都是T(N)=O(N^2)。 低阶项通常可以忽略,常数可以丢弃。在这些情况下,所需的精度要低得多


对于大oh,O(n)=O(n-1),它可能做得更多,这并不重要,因为O(k*n)或O(n+k),其中k=const仍然是O(n)。