Sorting Kotlin快速排序算法不进行任何排序,而是返回原始数组
我用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
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(元素)
}
}