内存中的堆和栈 堆: 是程序员手动申请的空间,空间用完需要程序员自己手动释放,也可能会由OS回收,分配方式类似链表; 堆比较大,地址向上增长; 堆一般存放对象 栈: 是系统申请的空间,空间用完系统会自动释放; 栈比较小,地址向下增长; 栈一般存放局部变量 数据结构中的堆和栈 堆: 可以看做一颗树,比 ...
分类:
其他好文 时间:
2019-12-20 18:58:12
阅读次数:
118
堆排序 最大堆调整:将堆的末端子节点作调整,使得子节点永远小于父节点 创建最大堆:将堆中的所有数据重新排序 堆排序:移除位在第一个数据的根节点,并做最大堆调整的递归运算 ...
分类:
编程语言 时间:
2019-12-19 23:19:17
阅读次数:
103
的两个特点? 堆是一个完全二叉树; 堆中每一个节点的值都必须大于等于(或小于等于)其子树中每个节点的值。 第一点,堆必须是一个完全二叉树。还记得我们之前讲的完全二叉树的定义吗?完全二叉树要求,除了最后一层,其他层的节点个数都是满的,最后一层的节点都靠左排列。第二点,堆中的每个节点的值必须大于等于(或 ...
分类:
编程语言 时间:
2019-12-18 21:43:29
阅读次数:
100
堆指的是每个节点的值大于等于或小于等于左右节点的值的完全二叉树结构,堆又分大顶堆(每个节点的值大于等于左右节点的值)和小顶堆(每个节点的值小于等于左右节点的值)。 使用堆进行排序的前提是要先构造一个堆出来,这里以大顶堆为例。 给定一个数组进行构造大顶堆。 构造大顶堆的主要思路: 1、n个数据; 2、 ...
分类:
编程语言 时间:
2019-12-17 13:24:57
阅读次数:
99
在我之前的文章中:《高效排序之——堆排序,归并排序、快速排序》中初步介绍了堆排序的过程,但是认真的说,自己并没有叙述的十分清楚,这篇博客,我将持续更新,表明堆排序的一个过程和核心思想。 系列博客将按照下面三个问题展开: 什么是堆? 为何堆结构可以用来排序? 怎么利用堆结构进行排序? 堆排序的算法性能 ...
分类:
编程语言 时间:
2019-12-15 16:35:47
阅读次数:
97
Sort 包介绍 Go 语言标准库 sort 包中实现了几种基本的排序算法:插入排序、快速排序和堆排序,但是在使用 sort 包进行排序时无需具体考虑使用哪种排序方式,因为该方法会根据传入的排序的数据量来进行自动选择合适的排序算法。 func insertionSort(data Interface ...
分类:
其他好文 时间:
2019-12-13 23:56:22
阅读次数:
140
1. 堆排序 算法核心思想 堆排序利用堆的特点, 最大堆要求节点的元素都要不小于其孩子,最小堆要求节点元素都不大于其左右孩子,那么处于最大堆的根节点的元素一定是这个堆中的最大值,每次把堆顶元素放置在二叉树的尾部,然后重新建堆这样循环处理,最终就能完成排序。 核心算法逻辑如下: 建堆 把堆顶的元素和最 ...
分类:
编程语言 时间:
2019-12-09 21:22:00
阅读次数:
86
1 维护最大堆性质的过程(MAX-HEAPIFY) 输入数组A和一个下标i。假设以LEFT(i)和RIGHT(i)为根节点二叉树都是最大堆,但是A[i]可能小于左右孩子节点。这时需要通过该过程使得A[i]在最大堆中“逐级下降”,从而使得以下标i为根节点二叉树为最大堆。 伪代码 : MAX-HEAPI ...
分类:
编程语言 时间:
2019-12-09 12:02:27
阅读次数:
104
1:排序有几种方法?用js实现快速排序 排序方法:冒泡,选择,快排,二分法,堆排, 2:js实现ajax的异步请求过程 1 创建XMLHttpRequest对象 <script language = "javascript" type = "text/javascript"> var xmlHttp ...
分类:
其他好文 时间:
2019-12-06 10:04:40
阅读次数:
93
原文:https://www.cnblogs.com/xiaohuiduan/p/11188304.html 十大排序算法 基本排序算法: 选择排序 插入排序 冒泡排序 高效排序算法: 梳排序 希尔排序 快速排序 堆排序 牺牲空间节约时间的高效排序: 归并排序 基数排序 基数排序 下面我将以我自己的 ...
分类:
编程语言 时间:
2019-12-03 23:49:03
阅读次数:
141