Sorting Kotlin快速排序算法不进行任何排序,而是返回原始数组

Sorting Kotlin快速排序算法不进行任何排序,而是返回原始数组,sorting,kotlin,quicksort,Sorting,Kotlin,Quicksort,我用kotlin编写了这个简单的快速排序算法。它返回原始数组而不进行任何排序。有人能指出我代码中的错误吗?我们将不胜感激 class QuickSort { fun sort(low: Int, high: Int, array: Array<Int>) { if (low < high) { val partitionIndex = partition(low, high, array) sort(low, partitionIndex

我用kotlin编写了这个简单的快速排序算法。它返回原始数组而不进行任何排序。有人能指出我代码中的错误吗?我们将不胜感激

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])
  }
}
类快速排序{
有趣的排序(低:整数,高:整数,数组:数组){
如果(低<高){
val partitionIndex=分区(低、高、数组)
排序(低,分区索引-1,数组)
排序(分区索引+1,高,数组)
}
}
私有有趣分区(低:Int,高:Int,数组:array):Int{
var leftPointer=low-1
val pivot=数组[高]
for(我从低到高){

如果(array[i]您已将
array
字段定义为可变列表,并将
array.totypedaray()
传递给
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)
  }
}
fun main(args:Array){
val quickSort=quickSort()
valarray=arrayOf(9,8,7,6,5)
quickSort.sort(0,array.size-1,array)
for(数组中的元素){
println(元素)
}
}