Jump to content

Sorting algorithms/Heapsort: Difference between revisions

no edit summary
No edit summary
Line 6,103:
Wend
End Sub</syntaxhighlight>
 
=={{header|Vlang}}==
<syntaxhighlight lang="vlang">
fn main() {
mut alt_arr := [4, 65, 2, -31, 0, 99, 2, 83, 782, 1]
println('Before : $alt_arr')
heap_sort(mut alt_arr) // Heap Sort
println('After : $alt_arr')
}
 
[direct_array_access]
fn heap_sort(mut array []int) {
n := array.len
for i := n/2; i > -1; i-- {
heapify(mut array, n, i) // Max heapify
}
for i := n - 1; i > 0; i-- {
array[i], array[0] = array[0], array[i]
heapify(mut array, i, 0)
}
}
 
[direct_array_access]
fn heapify(mut array []int, n int, i int) {
mut largest := i
left := 2 * i + 1
right := 2 * i + 2
if left < n && array[i] < array[left] {
largest = left
}
if right < n && array[largest] < array[right] {
largest = right
}
if largest != i {
array[i], array[largest] = array[largest], array[i]
heapify(mut array, n, largest)
}
}
</syntaxhighlight>
 
{{out}}
<pre>
Before : [4, 65, 2, -31, 0, 99, 2, 83, 782, 1]
After : [-31, 0, 1, 2, 2, 4, 65, 83, 99, 782]
</pre>
 
=={{header|Wren}}==
291

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.