登录
首页 >  Golang >  Go问答

golang中容器/堆是否能够高效地执行堆排序算法?

来源:stackoverflow

时间:2024-02-21 21:36:21 375浏览 收藏

有志者,事竟成!如果你在学习Golang,那么本文《golang中容器/堆是否能够高效地执行堆排序算法?》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

golang 容器/堆是否有效地在底层切片上进行堆排序?

看起来底层数组并不总是排序的。

type IntHeap []int
// ... other interface implementation
func main() {
    a := []int{}
    h := IntHeap(a)
    heap.Init(&h)
    heap.Push(&h, 3)
    heap.Push(&h, 2)
    heap.Push(&h, 5)
    // underlying array 'a' is not sorted
    fmt.Printf("a: %+v\n", a)
}

正确答案


底层数组不必排序。它只是代表堆实现使用的二叉树。

堆也不使用堆排序。堆排序是一种使用堆对数组进行排序的方法。

func main() {
    a := []int{}
    h := IntHeap(a)
    heap.Init(&h)
    heap.Push(&h, 3)
    heap.Push(&h, 2)
    heap.Push(&h, 5)

    // heapsort
    for h.Len() > 0 {
        fmt.Printf("%d ", heap.Pop(&h))
    }
    // output: 2 3 5
}

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>