预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于 ...
分类:
编程语言 时间:
2017-11-08 00:52:27
阅读次数:
314
堆排序(HeapSort)概念堆在树中是一个完成二叉树
堆分为大顶堆和小顶堆
大顶堆:非叶子结点的值大于或等于其左右孩子结点
小顶堆:非叶子结点的值小于或等于其左右孩子结点
特征:堆的根结点的值肯定是极值堆排序的实现步骤构建完全二叉树
将此完全二叉树调整为堆
根据堆的特性,使..
分类:
编程语言 时间:
2017-10-25 23:36:26
阅读次数:
247
一、简介 堆排序(HeapSort)是选择排序的改进版,它可以减少在选择排序中的比较次数,进而减少排序时间,堆排序法用到了二叉树的技巧,它利用堆积树来完成,堆积是一种特殊的二叉树,可分为大根堆和小根堆。 大根堆需要具备的条件: 它是一棵完全二叉树 所有节点的值都大于或等于它左右子节点的值 树根是堆积 ...
分类:
编程语言 时间:
2017-10-19 12:38:50
阅读次数:
153
堆排序 <script type="text/javascript"> //堆是一种特殊的完全二叉树(使用的是二叉树的顺序存储结构):每个节点的值都大于等于孩子节点的是大顶对 //小于等于孩子节点的是小顶对 //排序的思想:将待排的序列构成一个大顶堆,此时把最大值是根节点; //把根节点和最后一个元 ...
分类:
其他好文 时间:
2017-10-18 02:00:43
阅读次数:
155
Array 是所有数组的基类ArrayList 解决了所有Array 类的缺点 能动态扩容, 但是类型不安全的,而是会有装箱与拆箱的性能开销List<T> 则是解决了ArrayList 类的装箱,拆箱问题, 能够动态扩容,但是所有的顺序结构数据结构的缺点就是数据空间的开辟开销这三个类都是基于数组实现 ...
分类:
编程语言 时间:
2017-10-16 13:55:50
阅读次数:
197
学习参考:堆排序 Heap Sort、排序六 堆排序 堆结构:一棵完全二叉树。大根堆:K[ i ] < K[ 2i ] 、K[ i ] < K[ 2i+1 ] 。小根堆反之。 本文测试数据:《严奶奶数据结构》P281 由于笔者学业繁忙,没有编写使树形结构可视化的代码。各位读者请心中脑补。 堆调整函数 ...
分类:
编程语言 时间:
2017-10-09 14:11:01
阅读次数:
202
堆排序 堆排序前传 - 树与二叉树 树是一种很常见的非线性的数据结构,称为树形结构,简称树。所谓数据结构就是一组数据的集合连同它们的储存关系和对它们的操作方法。树形结构就像自然界的一颗树的构造一样,有一个根和若干个树枝和树叶。根或主干是第一层的,从主干长出的分枝是第二层的,一层一层直到最后,末端的没 ...
分类:
编程语言 时间:
2017-09-04 20:42:31
阅读次数:
162
packagecom.java.algorithm.test;
importorg.junit.Test;
importjava.util.Arrays;
publicclassHeapSortTest{
@Test
publicvoidtestHeapSort(){
int[]A=newint[]{4,1,3,2,16,9,10,14,8,7};
this.heapSort(A);
System.out.println(Arrays.toString(A));
}
publicintleft(int..
分类:
编程语言 时间:
2017-08-07 01:29:56
阅读次数:
151
1、堆排序算法描写叙述: (1)定义 n个keyword序列Kl,K2,…,Kn称为(Heap)。当且仅当该序列满足例如以下性质(简称为堆性质): 1)ki<=k(2i)且ki<=k(2i+1)(1≤i≤ n/2)。当然。这是小根堆。大根堆则换成>=号。//k(i)相当于二叉树的非叶子结点,K(2i ...
分类:
编程语言 时间:
2017-07-29 18:56:52
阅读次数:
206