码迷,mamicode.com
首页 >  
搜索关键字:堆排    ( 1969个结果
算法导论笔记第6章 堆和堆排序
堆排序结合了插入排序和归并排序的有点:它空间复杂度是O(1), 时间复杂度是O(nlgn). 要讲堆排序,先讲数据结构“堆” 堆: 堆是用数组来存放一个完全二叉树的数据结构。假设数组名是A,树的根节点存放在A[1]。它的左孩子存放在A[2],右孩子存放在A[3] 即:对于某个下标位i的节点,它的左孩 ...
分类:编程语言   时间:2018-01-23 22:09:21    阅读次数:219
排序算法及时间空间复杂度
非线性时间比较类排序 一、交换类排序:冒泡排序和快速排序 冒泡排序:从数组中第一个数开始,依次与下一个数比较并次交换比自己小的数,直到最后一个数。如果发生交换,则继续下面的步骤,如果未发生交换,则数 组有序,排序结束。 平均时间复杂度:n方 空间复杂度:1 快速排序:快速排序又称分区交换排序,是对冒 ...
分类:编程语言   时间:2018-01-23 14:28:57    阅读次数:204
学习笔记:堆排序
一、定义 ①堆通常是可被视为完全二叉树的数组。 ②堆中任意节点的数值总是大于或等于其左右子节点,为大根堆。 ③堆中任意节点的数值总是小于或等于其左右子节点,为小根堆。 二、存储 对于任意节点T[i] ①若其父节点存在,为T[(i - 1) / 2] ②若其左兄弟节点存在,为T[i - 1] ③若其右 ...
分类:编程语言   时间:2018-01-23 13:05:35    阅读次数:198
【编程珠玑】【第二章】书后习题解答
第4题,杂技算法只交换一次,貌似比求逆快,但是时间还与cache与内存的块交换有关,因为杂技算计访问的数据不连续,并且每次又只访问一个元素,频繁的换进换出,所以实际时间长。 第6题,给每个名字编码,将编码一样的放在一起,并按字典序顺序排列,查找的时候二分查找就可以了。 第7题,其实就是把列作为标识, ...
分类:其他好文   时间:2018-01-18 00:56:45    阅读次数:198
堆排序
1. 完全二叉树:叶节点只能出现在最后层或次下层,并且最下面一层的节点都集中在该层的最左边的二叉树。 2. 二叉堆:堆是一颗二叉树,并且满足下面的条件: (1)树的每一层都是满,除了最后一层的最右边元素 (2)任意一个父节点都大于或等于(小于或等于)两个子节点。(大于或等于的为最大堆,小于或等于的为 ...
分类:编程语言   时间:2018-01-17 01:13:05    阅读次数:192
算法3 七大排序之:直接插入排序和希尔排序
上一篇总结了直接选择排序和堆排序,这一篇要总结的是插入排序中的直接插入排序和希尔排序,我们主要从以下几点进行总结。 1、直接插入排序及算法实现 2、希尔排序及算法实现 3、直接插入排序PK希尔排序 1、直接插入排序及算法实现 什么是直接插入排序呢?直接插入排序的基本思想是:每次从无序序列中取出第一个 ...
分类:编程语言   时间:2018-01-15 00:30:32    阅读次数:187
最小的k个数1 堆排序实现
// 使用堆排序实现 其时间复杂度为O(nlgn) private static void buildMaxHeap(int[] input, int end) { // 从非叶子节点开始进行 for (int i = (end - 1) / 2; i >= 0; i--) { // 当前节点 cu ...
分类:编程语言   时间:2018-01-14 14:30:29    阅读次数:160
算法2 排序算法:直接选择排序和堆排序
上一篇总结了交换排序的冒泡排序和快速排序。这一篇要总结的是选择排序,选择排序分为直接选择排序和堆排序,主要从以下几点进行总结。 1、直接选择排序及算法实现 2、堆排序及算法实现 1、直接选择排序及算法实现 直接选择排序(Straight Select Sort) 是一种简单的排序方法,它的基本思想是 ...
分类:编程语言   时间:2018-01-14 10:55:33    阅读次数:151
堆排序【代码】
思路参考《算法导论》P84 堆排序中用到的最重要的就是堆这种数据结构,也正是因为这种数据结构能把时间复杂度控制在O(n * lgn) heapsort算法主要依赖于两个函数 MAX_HEAPIFY(int *A,int i,int len) 用于维护最大堆,时间复杂度为O(lgn),注意书上描述这个 ...
分类:编程语言   时间:2018-01-13 18:52:57    阅读次数:205
堆排序
//heapsort #include using namespace std; const int maxn =105; int a[maxn]; int n; void HeapInsert(int a[],int index) { while(a[index] > a[(index-1)/2]... ...
分类:编程语言   时间:2018-01-13 14:23:44    阅读次数:164
1969条   上一页 1 ... 55 56 57 58 59 ... 197 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!