默认情况下,Kotlin使用哪种排序方式?

时间:2018-10-24 08:34:30

标签: algorithm sorting kotlin

.sort()、. sortWith()等方法使用哪种排序方式?

val array = arrayOf(3,2,1)

对于不同类型和大小的数组,算法是否有所不同?

1 个答案:

答案 0 :(得分:3)

仅扩展Marko Toplnik said in the comment的内容:请谨慎创建数组,因为在此基础上,将使用不同的sort函数。


val array = arrayOf(3,2,1)
array.sort()

(在Kotlin / JVM中)导致的结果:

public fun <T> Array<out T>.sort(): Unit {
    if (size > 1) java.util.Arrays.sort(this)
}

https://github.com/JetBrains/kotlin/blob/04bbf2393684fb7f552da667e8f28dfc1f83bbfb/libraries/stdlib/jvm/src/generated/_ArraysJvm.kt#L1789-L1798

这将导致使用java.util.ComparableTimSort(请参阅sort(Object[] a)


val array = intArrayOf(3,2,1)
array.sort()

(在Kotlin / JVM中)导致的结果:

public actual fun IntArray.sort(): Unit {
    if (size > 1) java.util.Arrays.sort(this)
}

https://github.com/JetBrains/kotlin/blob/04bbf2393684fb7f552da667e8f28dfc1f83bbfb/libraries/stdlib/jvm/src/generated/_ArraysJvm.kt#L1729-L1734

这将导致使用java.util.DualPivotQuicksort(请参阅sort(int[] a)