Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- )
- func swap(A []int, a, b int) {
- var c int
- c = A[a]
- A[a] = A[b]
- A[b] = c
- }
- func heap(A []int, i, delim int) {
- var left int = 2*i + 1
- var right int = 2*i + 2
- if right >= delim {
- return
- }
- if (A[left] > A[right]) && (A[left] > A[i]) {
- swap(A, i, left)
- heap(A, left, delim)
- } else if A[right] > A[i] {
- swap(A, i, right)
- heap(A, right, delim)
- }
- }
- func heapsort(A []int) {
- var length int = len(A)
- for i := length/2 - 1; i >= 0; i-- {
- heap(A, i, length-1)
- }
- for i := length - 1; i > 0; i-- {
- swap(A, i, 0)
- heap(A, 0, i)
- }
- }
- func test(ok []int) {
- ok[1] = 100
- }
- func main() {
- sample := []int{9, 23, 24, 20, 18, 14, 17, 13, 15, 11, 10, 5, 7, 3, 2, 20}
- heapsort(sample)
- fmt.Println(sample)
- }
Add Comment
Please, Sign In to add comment