Which sorting is using for .sort(), .sortWith() etc methods?

val array = arrayOf(3,2,1)

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

推荐答案

扩展一下what 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))

Kotlin相关问答推荐

Gradle Jooq配置自定义生成器

在KMM合成多平台中创建特定于平台的视图

Kotlin多平台(KMP)保存到文件不能在iOS上保存

Kotlin:将泛型添加到列表任何>

如何优雅地声明一个StateFlow?

在kotlin中匹配多个变量

如何使用 Firebase 和 Kotlin 在文本 (Jetpack Compose) 中显示当前用户名?

使用事务时未调用 Kafka ConsumerInterceptor onCommit

Kotlin - 协程未按预期执行

使用 Discord4j 交叉发布 Discord 消息

parallelStream()和asSequence().asStream().parallel()之间的区别

如何有效地填充 Gradle Kotlin DSL 中的额外属性?

Kotlin 无法找到或加载主类

从列表中的每个对象中 Select 属性

调用单元测试验证伴随对象方法

Dagger2 Qualifier 不适用于 Kotlin?

未在IntelliJ IDEA上运行临时文件

Kotlin Flow 收集后无法执行代码

尾随 lambda 语法(Kotlin)的目的是什么?

Android studio,构建kotlin时出现奇怪错误:生成错误代码