堆排序的基本思想(小顶堆) 1) 先将初始排列关键字序列(R1,R2...,Rn-1,Rn)构成小顶堆,此堆为初始的无序区.(这里是从最后一个非叶结点向前进行赛选) 2)将堆顶元素R1与最后一个元素Rn交换,此时得到新的无序区(R1,R2...,Rn-1)和新的有序区(Rn),并且Rn小于无序区所有 ...
分类:
编程语言 时间:
2019-01-30 21:51:59
阅读次数:
190
代码和注释写完了但是图没画QAQ 简单介绍 堆的本质是一个完全二叉树,除了最下面一层以外,其他的每层(假设第$n$层)都有$2^n$个结点。节点存的值每层都是递增或者递减的。递增的话就是大顶堆,递减的话就是小顶堆。那么对于大顶堆来说,每个节点的儿子节点上的值都要小于等于该节点 ...
分类:
其他好文 时间:
2019-01-23 01:24:45
阅读次数:
180
题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 如何得 ...
分类:
其他好文 时间:
2019-01-13 00:08:02
阅读次数:
255
堆(heap) 1. 堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 根节点最大的堆叫做最大堆、大根堆或大顶堆 根节点最小的堆叫做最小堆、小根堆或小顶堆 常见的堆还有二叉堆、斐波那契堆等。 2. 堆是在程序运行时 ...
分类:
其他好文 时间:
2019-01-03 22:41:04
阅读次数:
209
堆排序是利用堆这种数据结构而设计的一种排序算法,属于选择排序,它的最坏、最好、平均复杂度均为O(Nlog2^N),属于不稳定排序;堆是具有以下性质的完全二叉树:每个节点的值都大于或等于其左右孩子节点的值,称为大顶堆;每个节点的值都小于或等于其左右孩子节点的值,称为小顶堆;用简单的公式描述一下堆的定义 ...
分类:
编程语言 时间:
2018-12-31 22:39:18
阅读次数:
329
引言 - 数据结构堆 堆结构都很耳熟, 从堆排序到优先级队列, 我们总会看见它的身影. 相关的资料太多了, 堆 - https://zh.wikipedia.org/wiki/%E5%A0%86%E7%A9%8D 无数漂亮的图片接二连三, 但目前没搜到一个工程中可以舒服用的代码库. 本文由此痛点而来 ...
分类:
其他好文 时间:
2018-12-05 13:21:46
阅读次数:
135
堆和堆排序 如何理解堆 堆是一种特殊的树,只要满足以下两点,这个树就是一个堆。 ①完全二叉树,完全二叉树要求除了最后一层,其他层的节点个数都是满的,最后一层的节点都靠左排列。 ②树中每一个结点的值都必须大于等于(或小于等于)其子树中每个节点的值。大于等于的情况称为大顶堆,小于等于的情况称为小顶堆。 ...
分类:
编程语言 时间:
2018-12-02 18:32:49
阅读次数:
200
概念:利用树结构进行排序。 分类:1、大顶堆: 每个小树的根节点都大于子节点 升序排序使用大顶堆 2、小顶堆:每个小树的子节点都大于根节点 降序排序使用小顶堆 ...
分类:
编程语言 时间:
2018-11-19 23:58:57
阅读次数:
298
20172320 2018 2019 1 《Java程序设计》第八周学习总结 教材学习内容总结 堆是一颗完全二叉树,分为最大堆(大顶堆)和最小堆(小顶堆);最小堆将其最小元素存储在二叉树的根处,其中每一个结点都小于或等于他的两个孩子;最大堆将其最大的元素存储在二叉树的根处,其中的结点都大于或等于他的 ...
分类:
编程语言 时间:
2018-11-10 22:42:03
阅读次数:
257
2017 2018 20172309 《程序设计与数据结构》第八周学习总结 一、教材学习内容总结 ~~相信其它很多同学都是以小顶堆来介绍这一章内容,所以我将以大顶堆来介绍这章内容。~~ 1.1 堆的简单介绍: 堆的定义:( 大顶堆 ) 堆实际上是一棵完全二叉树。 堆满足两个性质: 1. 堆的每一个父 ...
分类:
其他好文 时间:
2018-11-10 21:21:10
阅读次数:
195