Изучаю книжку "Грокаем алгоритмы", сейчас застопорился на быстрой сортировке.
Ниже код на голанг, почему-то правая сторона не сортируется.
// пример алгоритма быстрой сортировки с применением рекурсии
//
package main
import "fmt"
func quickSort(A []int, b int, k int) []int {
left, right := b, k-1 // определяем нижние и верхние границы массива
p := A[k/2] // опорный элемент
for left <= right { // пока нижняя и верхняя границы массива не пересеклись
for A[left] < p { // если первый элемент в нижнем массиве меньше опорного - переодим к следующему
left++
}
for A[right] > p {
right--
}
if left >= right {
break
}
if A[left] > A[right] {
A[left], A[right] = A[right], A[left]
}
}
if right > 0 {
quickSort(A, b, right)
}
if left > k {
quickSort(A, left, k)
}
return A
}
func main() {
unsortArr := []int{44, 14, 2, 4, 66, 54, 72, 34, 1, 3, 5, 8, 99, 12}
fmt.Println(quickSort(unsortArr, 0, len(unsortArr)))
}