Какой вид сортировки использует Kotlin по умолчанию? - PullRequest
0 голосов
/ 24 октября 2018

Какая сортировка используется для .sort (), .sortWith () и т. Д.?

val array = arrayOf(3,2,1)

Существуют ли различия в алгоритмах для массивов разных типов и размеров?

1 Ответ

0 голосов
/ 24 октября 2018

Просто вкратце о том, что Марко Топлник сказал в комментарии : будьте осторожны при создании массивов, потому что на этом основании будут использоваться различные функции 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))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...