码迷,mamicode.com
首页 >  
搜索关键字:堆排    ( 1969个结果
堆排序分析及优化
堆排序,是利用堆结构进行排序,一般是利用最大堆,即根节点比左右两个子树的节点都大,具体算法步骤如下。 一、创建堆         首先将数组中的元素调整成堆,对应下面程序中的createHeap(List list)方法。创建堆就是从树中最后一个内节点(下标为(n-1)/2)开始调整数组中元素的位置,使以这个内节点为根的子树满足堆的结构。即依次将以(n-1)/2、(n-1)/2-1、(n-1)...
分类:编程语言   时间:2015-04-09 17:38:23    阅读次数:332
C++排序(小堆排序)
#include #include using namespace std; template class MinHeap { public: MinHeap(int sz=DefaultSize) { capacity = sz>DefaultSize?sz:DefaultSize; heap = new Type[capacity]; size = 0; } MinHea...
分类:编程语言   时间:2015-04-08 18:05:40    阅读次数:149
算法导论--第六章、堆排序
1. 堆的概念堆的数据结构是一种数组对象;堆可以视作为一颗完全二叉树(其中,树的每一层都填满,最后一层可能除外);树中每个节点与数组中存放该节点值的元素对应;堆可以划分为两类:a) 最大堆:除了根节点,有A[parent(i)] >= A[i],最大元素即根节点;b) 最小堆:除了根节点,有A[pa...
分类:编程语言   时间:2015-04-08 12:22:57    阅读次数:120
优先队列和堆排序
优先队列和堆排序标签(空格分隔): 排序算法 数据结构优先队列和堆排序 优先队列 堆 1 基于堆的算法 初始化 自底向上堆化 自顶向下堆化 插入删除一项 2 堆排序 优先队列全部代码 1 优先队列普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (largest-in,first-...
分类:编程语言   时间:2015-04-08 10:59:15    阅读次数:214
1、设计模式之策略模式
设计模式的一句话 :过分设计是一种罪过,要根据项目实事求是,没有任何一种设计是一步到位,很多功能都是根据反馈进行改善。1、背景:在实际开发中,我们常常遇见实现某种业务功能时,有许多不同实现方式,使用者可以任意选择其中的一种方式。 例如,在排序某个序列数据时,我们可以选择冒泡排序、快速排序、插入排序、堆排序等等。我们在开发过程中,通常会选择 将不同的算法以硬编码的方式封装到一个类当中,当我们需要添...
分类:其他好文   时间:2015-04-07 12:02:47    阅读次数:158
算法导论——最大堆,以及堆排序算法
本段代码实现了建堆,维护最大堆的性质,堆排序函数,优先队列的相关函数(插入,找最大值,提取出最大值,增加关键值,增加元素),以及相关的测试 1 #include 2 #include 3 #include 4 #define LEFT(i) (2 * i) 5 #define RIG...
分类:编程语言   时间:2015-04-06 23:02:56    阅读次数:193
堆排序、优先队列
1.堆排序a.堆的定义n个元素序列{k1,k2,...,kn}当且仅当满足以下关系时,称之为堆。ki=k2i且ki>=k2i+1 (大根堆)以下针对最大堆b.维护堆的性质Max-Heapify通过让A[i]的值在最大堆中"逐级下降"(A[i]的值小于其左右孩子的值时),从而使得以i为根结点的子树重新...
分类:编程语言   时间:2015-04-06 15:34:34    阅读次数:218
堆排序(python)
堆排序算法 先看第一个函数HeapAdjust,这个函数功能是在已经是构成堆的二叉树上,如果节点k数据变化了,对节点k进行修正,使之成为一个新的堆二叉树,n为数据长度。 def HeapAdjust(lst,k,n): while(2*k+1<n): j=2*k+1 if j+1lst[j+1]: j=j+1 if...
分类:编程语言   时间:2015-04-06 09:01:20    阅读次数:242
Java 实现堆排序
堆堆排序和合并排序一样,是一种时间复杂度为O(nlgn)的算法,同时和插入排序一样,是一种就地排序算法(不需要额外的存储空间)。堆排序需要用到一种被称为最大堆的数据结构,与java或者lisp的gc不一样,这里的堆是一种数据结构,他可以被视为一种完全二叉树,即树里面除了最后一层其他层都是填满的。也正...
分类:编程语言   时间:2015-04-05 23:20:28    阅读次数:237
堆排序
#include "stdafx.h"void temp(int *l,int i,int j){ l[i]=l[i]^l[j]; l[j]=l[i]^l[j]; l[i]=l[i]^l[j];}//使用异或有个问题,当i和j相等时,不能实现交换的目的void HeapSort_M...
分类:编程语言   时间:2015-04-05 23:08:11    阅读次数:205
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!