带3个分区的QuickSort

问题描述

假设我们将Quicksort修改为具有三个分区,而不是两个。左分区的值枢轴。然后,我们在左右分区上递归。这种三向分区需要多少时间?

我在一个面试问题中看到了这一点,答案为O(n)。但是对于普通的1个分区快速排序,它是O(nlogn)。

请帮助我理解为什么O(n)吗?

解决方法

当所有值都相同时,只有O(n)。分区的第一个实例将找到所有==枢轴的值(无论为枢轴选择哪个值),并且由于没有值枢轴,因此不会发生递归。

对于普通数据,时间复杂度保持为平均情况O(n log(n))或最差情况O(n ^ 2)。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...