go排序-构建大顶堆
时间:2021-07-21
本文章向大家介绍go排序-构建大顶堆,主要包括go排序-构建大顶堆使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
package main import "fmt" func parentNode(i int) int { return (i - 1) / 2 } //左节点 func leftNode(i int) int { return 2*i + 1 } //右节点 func rightNode(i int) int { return 2*i + 2 } //创建heap func buildHeap(heap []int) { length := len(heap) for i := length/2 - 1; i >= 0; i-- { maxHeap(heap, i, length) } } // https://www.cnblogs.com/chengxiao/p/6129630.html // https://www.cnblogs.com/xingyunshizhe/p/11311754.html func maxHeap(heap []int, i int, length int) { fmt.Println(i) left := leftNode(i) right := rightNode(i) largest := 0 if left < length && heap[left] > heap[i] { largest = left } else { largest = i } if right < length && heap[right] > heap[largest] { largest = right } if largest != i { heap[i], heap[largest] = heap[largest], heap[i] // 第一轮排序 从倒数第一个非叶子节点到最后一个开始 把最大的树交换到父节点上 交换会导致新树不符合 //需要继续比较其父节点 largest这个节点被移动过 所以他要从新进行调整过 maxHeap(heap, largest, length) } } func main() { a := []int{4,5,2,1,5,6,7,3,2} buildHeap(a) fmt.Println(a) }
原文地址:https://www.cnblogs.com/brady-wang/p/15040076.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- R语言无监督学习:PCA主成分分析可视化
- 如何用r语言制作交互可视化报告图表
- R语言大数据分析纽约市的311万条投诉统计可视化与时间序列分析
- R语言动态可视化:制作历史全球平均温度的累积动态折线图动画gif视频图
- R语言里的非线性模型:多项式回归、局部样条、平滑样条、广义加性模型分析
- 使用R语言进行机制检测的隐马尔可夫模型HMM
- 【Kubernetes】Octant再探...
- 聊聊claudb的SlaveReplication
- 深度学习trick--labelsmooth
- Java锁的那些事儿
- React Hooks踩坑分享
- Python 自动化,Helium 凭什么取代 Selenium?
- Explain详解与索引最佳实践
- 使用SAP Analysis Path Framework (APF)展示CDS view数据
- 基于docker封装prometheus解决时区问题