Я реализовал быструю сортировку из книги Введение в алгоритмы.книга определяет процедуру следующим образом
Однако Я не вижу требования сравнения менее равного в строке 4, не долженДостаточно только сравнения меньше .
Для проверки я написал следующую программу, и она корректно работала на тестируемом наборе данных.
private fun partition(start: Int, end: Int, arr: Array<Int>) : Int{
var pivotIndex = end
var maximumElementIndex = start
for(index in start until end){
if(arr[index]<arr[pivotIndex]){
val temp = arr[index]
arr[index] = arr[maximumElementIndex]
arr[maximumElementIndex] = temp
maximumElementIndex++
}
}
val temp = arr[maximumElementIndex]
arr[maximumElementIndex] = arr[pivotIndex]
arr[pivotIndex] = temp
return maximumElementIndex
}
Я проверил ее на следующихвходные данные
- массив со всеми равными элементами
- отсортированный массив
- отсортированный в обратном порядке
- множественный набор случайных данных
так чего мне здесь не хватает?