func heapSort(arr []int) []int{
CreateHeap(arr)
for i:=0;i<len(arr);i++{
arr[0],arr[len(arr)-1-i] = arr[len(arr)-1-i],arr[0]
downAdjust(arr,0,len(arr)-1-i)
}
return arr
}
func CreateHeap(arr []int){
for i:=len(arr)/2;i>=0;i--{
downAdjust(arr,i,len(arr))
}
}
func downAdjust(arr []int,index,last int){
for {
l:=2*index+1
r:=l+1
if l>=last{
break
}
temp:=index
if l<last&&arr[l]>arr[temp]{
temp = l
}
if r<last&&arr[r]>arr[temp]{
temp = r
}
if temp==index{
break
}
arr[index],arr[temp] = arr[temp],arr[index]
index = temp
}
}
heap for go
最新推荐文章于 2024-11-12 13:03:38 发布