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)
}
}
我有一个用 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)
}
}