堆排序算法go实现
func HeapSort(arr []int) {
for i := len(arr)-1 ; i > 0 ; i-- {
downHeap(arr,i+1)
arr[i],arr[0] = arr[0],arr[i]
}
}
func downHeap(arr []int,length int) {
for i := length/2; i >= 0 ; i-- {
parent := i
for 2*parent+1 < length {
left := 2*parent+1
right := 2*parent+2
larger := left
if left < length {
if right < length {
if arr[right] > arr[left] {
larger = right
}
}
if arr[larger] > arr[parent] {
arr[larger],arr[parent] = arr[parent],arr[larger]
parent = larger
} else {
break
}
}
}
}
}