美文网首页
go(堆排序)

go(堆排序)

作者: 小王同学123321 | 来源:发表于2022-03-31 10:25 被阅读0次
package main

import (
    "fmt"
)

func HeapSort(arr []int) []int{
    length := len(arr)
    for i:=0;i<=length;i++{
        lesslength := length-i
        HeapSortMax(arr,lesslength)
        if i < length{
            arr[0],arr[lesslength-1]=arr[lesslength-1],arr[0]
        }
    }
    return arr
}

//堆排序,需要理解逻辑结构和存储结构2*n+1,2*n+2
func HeapSortMax(arr []int,length int) []int{
    //length := len(arr)
    if length <= 1{
        return arr
    }
    depth := length/2-1
    fmt.Println(depth)
    for i:=depth;i>=0;i--{
        topmax := i
        leftchild := 2*i+1
        rightchild := 2*i+2
        if leftchild <= length-1 && arr[topmax] < arr[leftchild]{
            topmax = leftchild
        }
        if rightchild <= length-1 && arr[topmax] < arr[rightchild]{
            topmax = rightchild
        }
        if i != topmax{
            arr[i],arr[topmax]=arr[topmax],arr[i]
        }
    }
    return arr
}


func main(){
    arr := []int{232,1,19,11,29, 30, 2, 5, 45, 8, 234, 12, 63}
    //fmt.Println(BubblesortMax(arr))
    fmt.Println(HeapSort(arr))
}

相关文章

  • go(堆排序)

  • Go-堆排序

    堆排序 算法实现 测试代码 排序结果 [-3 -1 2 3 4 8 8 9 10 15 20] 时间复杂度 O (...

  • 堆排序(go实现)

  • Go算法——堆排序

  • 堆排序

    目录 1.堆排序介绍 2.堆排序图文说明 3.堆排序的时间复杂度和稳定性 4.堆排序实现 堆排序介绍 堆排序(He...

  • 堆排序---基础篇

    本文主要介绍堆排序的一些基本过程和分析。 大纲 堆排序简介 堆排序代码实现 1. 堆排序简介 1.1 堆排序的存储...

  • 堆和堆排序

    最小K个数 堆排序 堆排序

  • JS实现堆排序

    原理 堆排序原理 实现 说明 堆排序对大文件很有效 堆排序是不稳定排序

  • iOS算法总结-堆排序

    iOS算法总结-堆排序 iOS算法总结-堆排序

  • 堆排序

    转载:图解排序算法(三)之堆排序 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选...

网友评论

      本文标题:go(堆排序)

      本文链接:https://www.haomeiwen.com/subject/hyggjrtx.html