Arrays 当保证分区后存在常量差异时,快速排序的最坏运行时
我们希望使用标准的快速排序进行排序,并且我们可以保证,在调用分区方法之后,两个部分的大小差异最多是一个常数因子a。此算法的最坏运行时间是什么?由于分区之间的大小差异有限,快速排序是最坏情况O(n log(n)) 基本上,每次进行拆分时,快速排序都会遍历整个数组。因此,我们只需要考虑最坏情况的划分,需要多少分裂才能将其降到1(或2)。 现在,如果我们保证两部分中较大的部分最多是另一部分的一倍,那么最坏的情况是,较大的部分实际上总是一倍大 在这种情况下,快速排序中的“层”数量将等于我们必须将数组的原始大小除以(1+a)/a才能得到1的次数。这等于输入大小以(1+a)/a为底的对数。因为a是常数,(1+a)/a也是常数,因此拆分的数量是O(log(n)),这意味着算法在O(n log(n))最坏情况下运行。分区之间的大小差异有限,快速排序是最坏情况O(n log(n)) 基本上,每次进行拆分时,快速排序都会遍历整个数组。因此,我们只需要考虑最坏情况的划分,需要多少分裂才能将其降到1(或2)。 现在,如果我们保证两部分中较大的部分最多是另一部分的一倍,那么最坏的情况是,较大的部分实际上总是一倍大 在这种情况下,快速排序中的“层”数量将等于我们必须将数组的原始大小除以(1+a)/a才能得到1的次数。这等于输入大小以(1+a)/a为底的对数。因为a是常数,(1+a)/a也是常数,因此拆分的数量是O(log(n)),这意味着算法在O(n log(n))最坏情况下运行Arrays 当保证分区后存在常量差异时,快速排序的最坏运行时,arrays,algorithm,sorting,quicksort,Arrays,Algorithm,Sorting,Quicksort,我们希望使用标准的快速排序进行排序,并且我们可以保证,在调用分区方法之后,两个部分的大小差异最多是一个常数因子a。此算法的最坏运行时间是什么?由于分区之间的大小差异有限,快速排序是最坏情况O(n log(n)) 基本上,每次进行拆分时,快速排序都会遍历整个数组。因此,我们只需要考虑最坏情况的划分,需要多少分裂才能将其降到1(或2)。 现在,如果我们保证两部分中较大的部分最多是另一部分的一倍,那么最坏的情况是,较大的部分实际上总是一倍大 在这种情况下,快速排序中的“层”数量将等于我们必须将数组的原