package main
import"fmt"funcbuildHeap(arr []int){
length :=len(arr)for i := length/2-1; i >=0; i--{toHeap(i, length-1, arr)}}functoHeap(i int, n int, arr []int){
max := i
left :=2*i +1
right :=2*i +2if left <= n && arr[max]< arr[left]{
max = left
}if right <= n && arr[max]< arr[right]{
max = right
}if max != i {
arr[i], arr[max]= arr[max], arr[i]toHeap(max, n, arr)}}funcheapSort(arr []int){
count :=len(arr)buildHeap(arr)for count >1{
arr[0], arr[count-1]= arr[count-1], arr[0]
count--toBuild(arr, count-1,0)}}funcmain(){
arr :=[]int{1,3,2,4,5,8,6,7}heapSort(arr)
fmt.Println(arr)}
快速排序
package main
import("fmt")funcquickSort(arr []int)([]int){var left []intvar right []int
length :=len(arr)if length <=1{return arr
}
base := arr[0]for i :=1; i < length; i++{if base > arr[i]{
left =append(left, arr[i])}else{
right =append(right, arr[i])}}
left =quickSort(left)
right =quickSort(right)
left =append(left, base)returnappend(left, right...)}funcmain(){
arr :=[]int{9,7,8,6,4,5,1,3,2,10,356,2123,12,2345345}
fmt.Println(quickSort(arr))}