码迷,mamicode.com
首页 >  
搜索关键字:堆排序    ( 1851个结果
算法导论——最大堆,以及堆排序算法
本段代码实现了建堆,维护最大堆的性质,堆排序函数,优先队列的相关函数(插入,找最大值,提取出最大值,增加关键值,增加元素),以及相关的测试 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
排序算法总结(java)
?? 排序算法 排序是将无需的记录序列调整为有序记录序列的一种操作。 包括:冒泡排序,选择排序,堆排序,插入排序,希儿排序,快速排序,归并排序等。   (一) 冒泡排序 基本思想: 每次进行相邻两个元素的比较,如果为逆序时即进行交换,直到没有反序的数据元素为止。 排序过程: 设想被排序的...
分类:编程语言   时间:2015-04-03 17:32:47    阅读次数:231
设计模式之策略模式
设计模式的一句话 :过分设计是一种罪过,要根据项目实事求是,没有任何一种设计是一步到位,很多功能都是根据反馈进行改善。 1、背景:在实际开发中,我们常常遇见实现某种业务功能时,有许多不同实现方式,使用者可以任意选择其中的一种方式。 例如,在排序某个序列数据时,我们可以选择冒泡排序、快速排序、插入排序、堆排序等等。我们在开发过程中,通常会选择 将不同的算法以硬编码的方式封装到一个类当中,当...
分类:其他好文   时间:2015-04-03 15:22:49    阅读次数:131
4.堆排序
//堆排序研究var cc=cc||consolefunction parent(i){ return i>>1}function left(i){ return 2*i+1}function right(i){ return 2*i+2}function exchange(A,p1,p2){ va...
分类:编程语言   时间:2015-04-03 14:58:26    阅读次数:434
#23 Merge k Sorted Lists (N路归并排序)
#23 Merge k Sorted Lists (N路归并排序)题目地址:#23 题目分类:链表/归并排序/堆排序 题目难度:hard题目 Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 翻译:合并K个已经排序的链表,返回一个排序好的链表。...
分类:编程语言   时间:2015-04-03 09:38:28    阅读次数:187
常见排序算法
排序算法有很多种,主要分为插入排序(直接插入排序、二分法插入排序)、交换排序(冒泡排序、快速排序)、选择排序(简单选择排序、堆排序)等,这里不说原理了,只贴代码。原理可以看严蔚敏的数据结构或者网上有人讲的原理很详细。给大家推荐一个链接点击打开链接 1.直接插入排序 package sortpackage; import java.util.Arrays; public class inse...
分类:编程语言   时间:2015-04-02 16:25:31    阅读次数:157
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!