| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 堆排序学习心得,一层套一层 -> 正文阅读 |
|
[数据结构与算法]堆排序学习心得,一层套一层 |
堆排序学习心得,一层套一层堆的结构:可以分为****大根堆*和*小根堆*,是一个完全二叉树*,而堆排序是根据堆的这种数据结构设计的一种排序,下面先来看看什么是大根堆和小根堆 性质:每个结点的值都大于其左孩子和右孩子结点的值,称之为大根堆;每个结点的值都小于其左孩子和右孩子结点的值,称之为小根堆 。 想看完整代码,直接划到最后。 总体步骤分为:构建二叉树、子树按堆排序 || heapify(),进行递归,建好完整堆,最后进行堆排序 首先随便构建二叉树
二叉树的 父节点下标=(子节点下标-1)/2 左子节点下标=(父节点下标*2)+1 右子节点下标=(父节点下标*2)+2
上面执行完,因为是递归一边,也只能完成一边堆。 所以完成整个堆 规律:最后一个节点下标求出父节点,然后递减,去heapify。
最后进行堆排序。 根节点砍断,然后 heapify。变成少一个数新的堆,不断的砍,知道为0; 看出来的数字,就是从小到大。因为交换的时候 swap(tree,i,0); i是逐渐减少的,意味数组下标逐渐减少,存的数字也是减少的。
完整代码
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:28:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |