当前位置: 首页 > news >正文

Go语言数据结构算法(二十五)堆排序

堆排序算法是一种流行且高效的排序算法.原理是将数组的元素可视化为一种特殊的完全二叉树.称为堆.

1.使用场景:

大型数据集:堆排序相对于大型数据集是有效的.因为其他算法开销对性能影响比较大.

内存分配:堆排序算法是一种就地排序.它不需要额外的内存来保存排序后的元素.

排序优先级队列:堆排序算法通常用于对优先级队列中的元素进行排序.这是一种数据结构.它维护一组元素.每个元素都有一个优先级.

2.实现:

2.1方法:

package data type MaxHeapData struct { slice []int heapSize int } func BuildMaxHeap(slice []int) MaxHeapData { m := MaxHeapData{slice, len(slice)} for i := len(slice) / 2; i >= 0; i-- { m.MaxHeapify(i) } return m } // 创建最大堆对象. func (m MaxHeapData) MaxHeapify(i int) { l, r := 2*i+1, 2*i+2 maxHeap := i if l < m.Size() && m.slice[l] > m.slice[maxHeap] { maxHeap = l } if r < m.Size() && m.slice[r] > m.slice[maxHeap] { maxHeap = r } if maxHeap != i { m.slice[i], m.slice[maxHeap] = m.slice[maxHeap], m.slice[i] m.MaxHeapify(maxHeap) } } func (m MaxHeapData) Size() int { return m.heapSize } // 定义队排序. func HeapSort(slice []int) []int { m := BuildMaxHeap(slice) for i := len(m.slice) - 1; i >= 1; i-- { m.slice[0], m.slice[i] = m.slice[i], m.slice[0] m.heapSize-- m.MaxHeapify(0) } return m.slice }

2.2main方法:

func main() { array := []int{33, 23, 56, 7, 8, 18, 99, 28} heapSort := data.HeapSort(array) fmt.Println(heapSort) }

3.实战:

3.1方法:
package data type MaxHeapData struct { slice []int heapSize int } func BuildMaxHeap(slice []int) []int { for i := len(slice) / 2; i >= 0; i-- { slice = MaxHeapify(slice, i) } return slice } func MaxHeapify(array []int, i int) []int { l, r := left(i)+1, right(i)+1 maxHeap := i if l < len(array) && l >= 0 && array[l] > array[maxHeap] { maxHeap = l } if r < len(array) && r >= 0 && array[r] > array[maxHeap] { maxHeap = r } if maxHeap != i { array[i], array[maxHeap] = array[maxHeap], array[i] MaxHeapify(array, maxHeap) } return array } func (m MaxHeapData) Size() int { return m.heapSize } // 定义队排序. func HeapSort(slice []int) []int { m := BuildMaxHeap(slice) size := len(m) for i := len(m) - 1; i >= 1; i-- { m[0], m[i] = m[i], m[0] size-- MaxHeapify(m[:size], 0) } return m } func left(i int) int { return 2 * i } func right(i int) int { return 2*i + 1 }
3.2main方法:
func main() { array := []int{33, 23, 56, 7, 8, 18, 99, 28} heapSort := data.HeapSort(array) fmt.Println(heapSort) }

仰天大笑出门去.

如果大家喜欢我的分享我的话.可以关注我的微信公众号

念何架构之路

http://www.jsqmd.com/news/86788/

相关文章:

  • AI数据预处理为何成为LLM训练成败的关键因素?
  • 学术文档格式转换的终极解决方案:ScienceDecrypting免费解密工具
  • 群晖照片人脸识别终极解决方案:一键解锁AI智能分类
  • Windows系统优化大师:一键解决卡顿、提升性能的终极指南
  • Vue-Vben-Admin快速构建桌面应用:Electron实战完整指南
  • 百万Token革命:Qwen2.5-1M开源模型重构长文本处理范式
  • 2025年质量好的生态板用户口碑最好的厂家榜 - 行业平台推荐
  • COLMAP三维重建:7个实战故障排除技巧与深度优化策略
  • 2025年质量好的进口品牌缓冲铰链厂家最新权威实力榜 - 行业平台推荐
  • IntelliJ IDEA透明视频播放插件:工作休闲两不误的秘密武器
  • StarGAN统一模型在多域图像生成中的革命性突破与深度解析
  • 2025年比较好的蛇形帘厂家最新推荐排行榜 - 行业平台推荐
  • 如何免费获取Scribd电子书:2025年完整指南与实用教程
  • 2025年五大封闭式冷却塔厂推荐,专业厂家排行榜新测评 - mypinpai
  • 视频字幕提取终极指南:AI技术如何实现48倍速高效处理
  • 1200页Cplex中文教程:从零基础到实战精通
  • 2025年比较好的高端展厅设计/企业展厅设计科技智能展厅设计榜 - 行业平台推荐
  • 2025年质量好的隧道炉厂家最新权威实力榜 - 行业平台推荐
  • 2025年靠谱的隔音泡棉厂家最新推荐排行榜 - 行业平台推荐
  • 2025年知名的全屋定制/全屋定制公司口碑榜 - 行业平台推荐
  • 2025 年 12 月沸腾制粒干燥机厂家权威推荐榜:高效造粒与智能干燥技术领航者深度解析 - 品牌企业推荐师(官方)
  • 2025 年 12 月螺带混合机厂家实力推荐榜:高效匀质与耐用设计,助力粉体/浆料混合工艺升级的可靠之选 - 品牌企业推荐师(官方)
  • 2025年牙齿正畸机构口碑大比拼,前三名实至名归,拔牙正畸/全口牙周治疗/虎牙正畸/牙齿有缝隙怎么修复比较好/正畸和正颌牙齿正畸选哪家推荐 - 品牌推荐师
  • 2025年靠谱的家庭护理床/智能护理床厂家最新推荐权威榜 - 行业平台推荐
  • 2025年知名的生涯规划产品职业规划产品人气榜 - 行业平台推荐
  • 2025 年滚筒刮板干燥机厂家权威推荐榜:高效节能与稳定耐用,工业干燥领域技术革新者深度解析 - 品牌企业推荐师(官方)
  • 7大核心模块,助你攻克量化金融面试难关!
  • Armbian音频系统终极配置指南:从零到精通
  • AI工程实战指南:7大避坑技巧助你高效构建智能应用
  • Refine框架实战:我在Next.js项目中遭遇的Turbopack兼容性大坑