堆排序 public class HeapSort { public static void buildMaxHeap(int[] data, int lastIndex){ for(int i=(lastIndex 1)/2;i =0;i ){ //k保存正在判断的节点 int k=i; //如果 ...
分类:
编程语言 时间:
2017-12-08 19:25:21
阅读次数:
162
打印二叉堆:利用层级关系 我这里是先将堆排序,然后在sort里执行了打印堆的方法printAsTree() 执行结果: ...
分类:
编程语言 时间:
2017-12-03 16:25:21
阅读次数:
173
一、堆的概念 所谓堆,它是一个数组,也能够被看成一个近似的全然二叉树。树上每一个结点相应数组的一个元素。二叉堆分为二种:最大堆和最小堆。本文主要介绍最大堆,最小堆类似。最大堆的特点:对于随意某个结点,该结点的值大于左孩子、右孩子的值,可是左右孩子的值没有要求。 二、堆排序算法 首先,按堆的定义将数组 ...
分类:
编程语言 时间:
2017-12-02 15:12:16
阅读次数:
136
public class HeapSort { 1. 2. public static void sort(Comparable[] data) { 3. // 构建最大堆 4. buildMaxHeap(data); 5. // 循环,每次把根节点和最后一个节点调换位置 后面的扔了搞前面的 ... ...
分类:
编程语言 时间:
2017-11-27 12:47:49
阅读次数:
163
在堆排序中,我们首先需要建立一个最大堆(每个最小堆的堆顶元素大于它的子节点),,建立好后在堆顶的元素一定是最大元素,此时我们将这个元素和最后一个元素进行交换,然后重新调整树,让它满足最大堆,以此类推直到交换到第二个元素停止交换。 以下是代码实现: int n = 14; int[] arrs = n ...
分类:
编程语言 时间:
2017-11-26 22:57:43
阅读次数:
239
最近复习了下堆排序的知识, 写下这篇文章和大家交流 。主要内容: 1. 什么是二叉堆 2. 二叉堆的表示方法 3. 二叉堆节点间的位置关系 4. 堆有序化的基本算法:上浮和下沉 5. 二叉堆的基本操作:插入元素和删除最大元素 6. 堆排序 ...
分类:
编程语言 时间:
2017-11-25 13:02:08
阅读次数:
250
要想明白堆排序,首先要明白堆和数组是等价的本质,还要熟悉完全二叉树的性质。 有关完全二叉树的性质 http://www.cnblogs.com/joyeehe/p/7865578.html 最大堆排序源码: 注意:假设待排序数组是a[101],此程序,对索引1到101的单元排序,不处理a[0],因为 ...
分类:
编程语言 时间:
2017-11-20 23:21:14
阅读次数:
161
Kth Largest Element in an Array 题解 题目来源:https://leetcode.com/problems/kth largest element in an array/description/ Description Find the kth largest el ...
分类:
其他好文 时间:
2017-11-18 18:41:12
阅读次数:
210
堆排序,顾名思义,是采用数据结构堆来进行排序的一种排序算法。 研究没有规律的堆,没有任何意义。特殊的堆有最大堆(父节点值大于等于左右字节点值),最小堆(父节点值小于等于子节点值)。一般采用最大堆来进行排序,图1为最大堆来表示一维数组。 图1 最大堆表示一维数组 2叉树堆的几点特性 1、 最后父节点索 ...
分类:
编程语言 时间:
2017-11-14 20:10:26
阅读次数:
307
/*堆排序(大顶堆)*/ #include #include using namespace std; void HeapAdjust(int *a,int i,int size) //调整堆 { int lchild=2*i; //i的左孩子节点序号 int rchild=2*i+1; //i的右... ...
分类:
其他好文 时间:
2017-11-12 18:35:18
阅读次数:
136