Какая сортировка используется для .sort (), .sortWith () и т. Д.?
val array = arrayOf(3,2,1)
Существуют ли различия в алгоритмах для массивов разных типов и размеров?
Просто вкратце о том, что Марко Топлник сказал в комментарии : будьте осторожны при создании массивов, потому что на этом основании будут использоваться различные функции sort.
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))
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))
java.util.DualPivotQuicksort
sort(int[] a)