Kotlin 快速排序算法不做任何排序和 returns 原始数组

Kotlin Quick sort algorithm does not do any sorting and returns the original array

我有一个用 kotlin 编写的简单快速排序算法。它 returns 没有进行任何排序的原始数组。谁能指出我的代码中的任何错误?不胜感激。

class QuickSort {

  fun sort(low: Int, high: Int, array: Array<Int>) {
    if (low < high) {
      val partitionIndex = partition(low, high, array)
      sort(low, partitionIndex - 1, array)
      sort(partitionIndex + 1, high, array)
    }
  }

  private fun partition(low: Int, high: Int, array: Array<Int>): Int {
    var leftPointer = low - 1
    val pivot = array[high]
    for (i in low until high) {
      if (array[i] <= pivot) {
        leftPointer++
        swap(array, i, leftPointer)
      }
    }
    swap(array, leftPointer + 1, high)
    return leftPointer + 1
  }

  private fun swap(array: Array<Int>, firstIndex: Int, secondIndex: Int) {
    val temp = array[firstIndex]
    array[firstIndex] = array[secondIndex]
    array[secondIndex] = temp
  }
}

fun main(args: Array<String>) {
  val quickSort = QuickSort()
  val array = mutableListOf(9, 8, 7, 6, 5)
  //Should return 5,6,7,8,9
  quickSort.sort(0, array.size - 1, array.toTypedArray())
  for (i in 0 until array.size) {
    println(array[i])
  }
}

您已将 array 字段定义为可变列表,并将 array.toTypedArray() 传递给 sort 函数。 array.toTypedArray() 将是一个完全不同的对象引用并进行排序,并且 array 对象保持原样。

要修复,只需使用 arrayOf 函数正确定义变量并将相同的变量发送到 sort 函数

fun main(args: Array<String>) {
  val quickSort = QuickSort()
  val array = arrayOf(9, 8, 7, 6, 5)
  quickSort.sort(0, array.size - 1, array)
  for (element in array) {
    println(element)
  }
}