Sparkmoons / go-ez-tasks

1 stars 0 forks source link

Сортировка кучей #4

Open KazikovAP opened 5 months ago

KazikovAP commented 5 months ago

К завершению темы сортировок, можно ещё добавить сортировку кучей

func heapify(a []int, n int, i int) { largest := i left := 2i + 1 right := 2i + 2

if left < n && a[left] > a[largest] {
    largest = left
}

if right < n && a[right] > a[largest] {
    largest = right
}

if largest != i {
    a[i], a[largest] = a[largest], a[i]

    heapify(a, n, largest)
}

}

func heapSort(a []int) []int { n := len(a)

for i := n/2 - 1; i >= 0; i-- {
    heapify(a, n, i)
}

for i := n - 1; i >= 0; i-- {
    a[0], a[i] = a[i], a[0]

    heapify(a, i, 0)
}

return a

}