返回

Kotlin实现的归并排序算法

Android

Kotlin中的归并排序算法

归并排序是一种分而治之的排序算法,它通过将列表分成较小的部分,然后递归地对每个部分进行排序,最后将排序后的部分合并成一个有序的列表来工作。

算法步骤

  1. 将列表分成两个相等或几乎相等的部分。
  2. 递归地对每个子列表进行排序。
  3. 将排序后的子列表合并成一个有序的列表。

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实现的归并排序算法清晰易懂,并且可以轻松地应用于各种场景。希望本文对您有所帮助。