码迷,mamicode.com
首页 > 编程语言 > 详细

堆排序

时间:2020-06-13 22:58:03      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:last   图片   idt   查询   EAP   bsp   nod   height   堆排   

 技术图片

 

package HeapSort

// 使用堆排序查询出找出堆里面最大的数
func HeapSortMax(arr []int, length int) []int {
    //length := len(arr)
    if length <= 1 {
        return arr
    }
    depth := length/2 - 1
    // 从最底部一个二叉树开始找
    for i := depth; i >= 0; i-- {
        topMax := i
        leftNode := 2*i + 1
        rightNode := 2*i + 2
        if leftNode < length && arr[leftNode] > arr[topMax] {
            topMax = leftNode
        }
        if rightNode < length && arr[rightNode] > arr[topMax] {
            topMax = rightNode
        }
        if i != topMax {
            arr[i], arr[topMax] = arr[topMax], arr[i]
        }
    }
    return arr
}

func HeapSort(arr []int) []int {
    length := len(arr)
    // 这里是找出最大的放在最后面
    for i := 0; i < length; i++ {
        lastLen := length - i
        HeapSortMax(arr, lastLen)
        
        arr[0], arr[lastLen-1] = arr[lastLen-1], arr[0]
      
    }
    return arr
}

 

堆排序

标签:last   图片   idt   查询   EAP   bsp   nod   height   堆排   

原文地址:https://www.cnblogs.com/shiwenhu/p/13122055.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!