返回
Kotlin实现的归并排序算法
Android
2023-12-23 22:34:29
Kotlin中的归并排序算法
归并排序是一种分而治之的排序算法,它通过将列表分成较小的部分,然后递归地对每个部分进行排序,最后将排序后的部分合并成一个有序的列表来工作。
算法步骤
- 将列表分成两个相等或几乎相等的部分。
- 递归地对每个子列表进行排序。
- 将排序后的子列表合并成一个有序的列表。
Kotlin实现
fun mergeSort(list: List<Int>): List<Int> {
if (list.size <= 1) {
return list
}
val middleIndex = list.size / 2
val leftList = list.subList(0, middleIndex)
val rightList = list.subList(middleIndex, list.size)
val sortedLeftList = mergeSort(leftList)
val sortedRightList = mergeSort(rightList)
return merge(sortedLeftList, sortedRightList)
}
fun merge(leftList: List<Int>, rightList: List<Int>): List<Int> {
val mergedList = mutableListOf<Int>()
var leftIndex = 0
var rightIndex = 0
while (leftIndex < leftList.size && rightIndex < rightList.size) {
if (leftList[leftIndex] < rightList[rightIndex]) {
mergedList.add(leftList[leftIndex])
leftIndex++
} else {
mergedList.add(rightList[rightIndex])
rightIndex++
}
}
while (leftIndex < leftList.size) {
mergedList.add(leftList[leftIndex])
leftIndex++
}
while (rightIndex < rightList.size) {
mergedList.add(rightList[rightIndex])
rightIndex++
}
return mergedList
}
算法复杂度
归并排序的平均时间复杂度为O(n log n),最坏情况下的时间复杂度也是O(n log n)。
总结
归并排序是一种高效、稳定的排序算法,特别适用于对大列表进行排序。Kotlin实现的归并排序算法清晰易懂,并且可以轻松地应用于各种场景。希望本文对您有所帮助。