这是一个有效的快速实施方案吗?

时间:2016-05-06 21:44:37

标签: java sorting quicksort

这是quicksort的有效实现吗?它与我在其他地方看到它的实现方式不同,但我发现以这种方式实现它更容易。据我所知,它仍然就位并且O(n log n)[编辑:O(n log n)预期运行时间,O(n ^ 2)最坏情况],但是想要确定之前我是在求职面试中做的,看起来像个白痴......

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath 'com.android.databinding:dataBinder:1.0-rc4'
    }
}
...

android {
    dataBinding {
        enabled true
    }
}
...

1 个答案:

答案 0 :(得分:0)

它看起来不错(但你应该尝试确定),但它不在O(n log(n))

实际上,通过始终将最大值作为中间值,可以发送将触发n递归调用的特定数组,这使得总复杂度为N^2

例如:1, 2, 3, 7, 4, 5, 67将成为枢轴,因此数组将被分为空数组和1, 2, 3, 4, 5, 6。 在这种情况下,只有第一次拆分是“坏”,但你可以很容易想象如何使所有拆分变坏。

要获得O(N log(N)) 平均值复杂度,最常用的解决方案是随机选择轴。