golang-heap-sort

freedbg · 2018-01-07 20:07:23 · 1237 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2018-01-07 20:07:23 的文章,其中的信息可能已经有所发展或是发生改变。

package main

import (
    "fmt"
)

func main() {
    array2 := []int{3, 2, 1}
    heapsort(array2)
    fmt.Println("HeapMY", array2)
}

func heapsort(array []int) {
    ep := (len(array) - 1) >> 1
    fmt.Println(ep)
    for i := ep; i >= 0; i-- {
        heapt(array, i, len(array)-1)
    }

    for i := len(array) - 1; i > 0; i-- {
        array[0], array[i] = array[i], array[0]
        heapt(array, 0, i-1)
    }
}

func heapt(array []int, start int, end int) {
    le := start*2 + 1
    re := le + 1
    if le > end {
        return
    }

    var tmp = le
    if re <= end && array[re] > array[le] {
        tmp = re
    }

    if array[tmp] > array[start] {
        fmt.Println(start, end, array)
        array[start], array[tmp] = array[tmp], array[start]
        heapt(array, tmp, end)
    }
}

堆排序


有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1237 次点击  
加入收藏 微博
1 回复  |  直到 2018-01-07 23:14:40
channel
channel · #1 · 7年之前

排序序列哇

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传