1、小堆:堆的构造,i>数组直接生成堆(向下调整),iii>插入创建堆(向上调整);(1)、怎么实现一次调整?找到最后一个非叶子结点,n/2-1;一直往下调整即可!(2)堆排----->优先级队列堆的删除,只能是堆顶元素,再拿最后一个元素补充上去。在向下做一次调整。形成新的堆..
分类:
其他好文 时间:
2016-08-10 00:59:56
阅读次数:
198
选择排序是常用内部排序的一种,常见的实现算法有直接选择排序算法和堆排序算法,选择排序的基本思想是每次从待排数据中选择第n小的数据放到排序列表的第n个位置,假如共有N个数据待排,那么经过N-1次排序后,待排数据就已经按照从小到大的顺序排列了。 直接选择排序算法的思想比较简单:(假设数据放在一个数组a中 ...
分类:
编程语言 时间:
2016-08-09 10:35:58
阅读次数:
130
1、堆一种完全二叉树的线性表示方法;就是数组形式保存数据。大堆:根(父)结点大于左右结点数据------->降序小堆:根(父)结点小于左右结点------->升序小堆如图:小堆符合每个根(父)结点都比左右结点小!!!堆的存储结构,就是一个线性表结构:private:
enum{HEAP_DEFAU..
分类:
其他好文 时间:
2016-08-09 00:40:25
阅读次数:
205
堆排序是对选择排序的改进(时间复杂度和希尔排序一样O(nlog2n)) 数据结构:完全二叉树(大顶堆,根节点都比左右节点大,小顶堆,根节点小于双亲节点) public class HeapSort { public static void main(String[] args) { int a[]= ...
分类:
编程语言 时间:
2016-08-06 17:34:45
阅读次数:
135
Prime + Heap 简直神了 时间优化好多,顺便就把Heapsort给撸了一发 具体看图 Heapsort利用完全二叉树+大(小)顶锥的结构每次将锥定元素和锥最末尾的元素交换 同时大(小)顶锥元素数 -1,迭代n-1次级OK了 我这里的是按从小到大拍的 ...
分类:
编程语言 时间:
2016-08-06 14:24:26
阅读次数:
218
稳定性:快速 希尔 选择 堆排序不稳定 时间复杂度:平均情况下,快速、希尔、归并和堆排序的时间复杂度均为O(nlog2(n)),其他都是O(n^2)。最坏情况下,快排的时间复杂度为O(n^2) ...
分类:
编程语言 时间:
2016-08-05 17:43:09
阅读次数:
205
算法分析: 堆排序的思想是利用数据结构--堆。具体的实现细节: 1. 构建一个最大堆。对于给定的包含有n个元素的数组A[n],构建一个最大堆,从最下层最右边的非终端结点开始构建,将它与其孩子进行比较和若有必要的互换,调整这个堆结构,使其满足最大堆的特性。当为了满足最大堆特性时,堆结构发生变化,此时递 ...
分类:
编程语言 时间:
2016-08-05 15:35:48
阅读次数:
146
转自:八大排序算法 - CSDN 概述 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短; 1.插入排序—直接插 ...
分类:
编程语言 时间:
2016-07-29 18:54:05
阅读次数:
205
八大排序算法 八大排序算法 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并 ...
分类:
编程语言 时间:
2016-07-29 18:50:04
阅读次数:
244