堆排序 //堆是一棵完全二叉树或近似完全二叉树;若任何一非叶子节点i满足:value[i] <= value[2i+1] && value[i] <= value[2i+2]则称为小顶堆; 若任何一非叶子节点i满足:value[i] >= value[2i+1] && value[i] >= val ...
分类:
编程语言 时间:
2016-09-27 18:03:09
阅读次数:
148
堆排序的是集合了插入排序的单数组操作,又有归并排序的时间复杂度,完美的结合了2者的优点。 堆的定义 n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。 情形1:ki <= k2i 且ki <= k2i+1 (最小化堆或小顶堆) 情形2:ki >= k2i 且ki >= k2 ...
分类:
编程语言 时间:
2016-09-25 17:11:02
阅读次数:
253
堆排序是一种树形选择排序,是对直接选择排序的有效改进。 基本思想: 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。 若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于( ...
分类:
编程语言 时间:
2016-09-20 23:43:04
阅读次数:
189
堆是完全二叉树 排序之前,首先要建立一个堆,比如给定一个数组[1,3,5,6,2,4,8,6,9],建立二叉树如下: 对排序分为大顶堆和小顶堆 大顶堆:父节点的关键字>=左右孩子节点的关键字 小顶堆:父节点的关键字<=左右孩子节点的关键字 以大顶堆为例,对上述完全二叉树进行堆排序 从最后一个非叶结点 ...
分类:
编程语言 时间:
2016-09-17 12:09:39
阅读次数:
206
左偏树 炒鸡棒的论文《左偏树的特点及其应用》 虽然题目要求比论文多了一个条件,但是……只需要求非递减就可以AC……数据好弱…… 虽然还没想明白为什么,但是应该觉得应该是这样——求非递减用大顶堆,非递增小顶堆…… 这题和bzoj1367题意差不多,但是那题求的是严格递增。(bzoj找不到那道题,可能是 ...
分类:
其他好文 时间:
2016-08-22 00:27:21
阅读次数:
205
堆排序是对选择排序的改进(时间复杂度和希尔排序一样O(nlog2n)) 数据结构:完全二叉树(大顶堆,根节点都比左右节点大,小顶堆,根节点小于双亲节点) public class HeapSort { public static void main(String[] args) { int a[]= ...
分类:
编程语言 时间:
2016-08-06 17:34:45
阅读次数:
135
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。 堆的定义 n个元素的序列{k1,k2,…,kn}当且仅当满足下列关系之一时,称之为堆。 情形1:ki <= k2i 且ki <= k2i+1 (最小化堆或小顶堆) 情 ...
分类:
编程语言 时间:
2016-07-20 22:40:21
阅读次数:
239
堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:
Key[i]<=key[2i+1]&&Key[i]=Key[2i+1]&&key>=key[2i+2]
即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。
堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>=key[2i+2]称为大顶堆,
满足 Key[i]<=key[2i+1]&&Key[i]<=key[2i+2]称为小顶堆。
由上述性质可知大顶堆的堆顶的关键字肯定是所有关键字...
分类:
编程语言 时间:
2016-06-24 15:45:04
阅读次数:
187
一、题目要求:
将K个有序链表合并为一个有序链表
二、实现方法:
方法一:利用最小堆方法
用一个大小为K的最小堆(用优先队列+自定义降序实现)(优先队列就是大顶堆,队头元素最大,自定义为降序后,就变成小顶堆,队头元素最小),先把K个链表的头结点放入堆中,每次取堆顶元素,然后将堆顶元素所在链表的下一个结点加入堆中。
整体测试代码:
#include...
分类:
编程语言 时间:
2016-06-02 13:48:28
阅读次数:
243
堆排序 堆排序:基于优先队列的思想,时间复杂度为O(N logN )。 堆分为大顶堆和小顶堆,大顶堆是每个父节点的值都大于等于每个子节点的值,而小顶堆恰恰相反,每一个父节点的值都小于等于子节点的值。 首先是根据已知的数据构建一个大顶堆,给定的数组序列:a={16,7,3,20,17,8},构建过程如 ...
分类:
编程语言 时间:
2016-06-01 21:07:37
阅读次数:
173