Guest User

Untitled

a guest
Dec 18th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.74 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. )
  6.  
  7. func swap(A []int, a, b int) {
  8. var c int
  9. c = A[a]
  10. A[a] = A[b]
  11. A[b] = c
  12. }
  13.  
  14. func heap(A []int, i, delim int) {
  15.  
  16. var left int = 2*i + 1
  17. var right int = 2*i + 2
  18.  
  19. if right >= delim {
  20. return
  21. }
  22.  
  23. if (A[left] > A[right]) && (A[left] > A[i]) {
  24. swap(A, i, left)
  25. heap(A, left, delim)
  26. } else if A[right] > A[i] {
  27. swap(A, i, right)
  28. heap(A, right, delim)
  29. }
  30. }
  31.  
  32. func heapsort(A []int) {
  33. var length int = len(A)
  34.  
  35. for i := length/2 - 1; i >= 0; i-- {
  36. heap(A, i, length-1)
  37. }
  38. for i := length - 1; i > 0; i-- {
  39. swap(A, i, 0)
  40. heap(A, 0, i)
  41. }
  42. }
  43.  
  44. func test(ok []int) {
  45. ok[1] = 100
  46. }
  47.  
  48. func main() {
  49. sample := []int{9, 23, 24, 20, 18, 14, 17, 13, 15, 11, 10, 5, 7, 3, 2, 20}
  50. heapsort(sample)
  51. fmt.Println(sample)
  52. }
Add Comment
Please, Sign In to add comment