码迷,mamicode.com
首页 >  
搜索关键字:堆排    ( 1969个结果
堆排序
堆排序是利用堆积树这种数据结构设计的一种算法。 要学习堆排序,我们首先要了解什么是二叉堆: 二叉堆是完全二叉树这这是近似完全二叉树。二叉堆可分为两种形式:最大堆和最小堆。 最大堆的性质是指某个结点的值至多与起父结点的值一样大,最小堆的性质就是指某个节点的值都大于其父结点的值。下图是一个最大堆和一个最小堆。 在堆排序中我们一般使用最大堆。我们要进行堆排序,首先需要把我们的数组转化成一...
分类:编程语言   时间:2015-05-10 09:44:24    阅读次数:133
各种排序算法汇总
目录简介交换排序冒泡排序快速排序插入排序直接插入排序希尔排序选择排序简单选择排序堆排序归并排序基数排序总结简介排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记 录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若...
分类:编程语言   时间:2015-05-09 21:45:48    阅读次数:245
堆及堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都...
分类:编程语言   时间:2015-05-09 17:25:40    阅读次数:166
几种简单排序算法的比较
名称最好时间最坏时间是否稳定冒泡 O (n^2)O (n^2)是插入O (n)O (n^2)是选择 O (n^2)O (n^2)否快排O (nlgn)O (n^2)否归并O(nlgn)是基数O(d*(n+rd))是堆排序O(nlgn)O(nlgn)否希尔排序O(n^1.5)左右否
分类:编程语言   时间:2015-05-08 17:51:38    阅读次数:101
八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较...
分类:编程语言   时间:2015-05-08 10:49:07    阅读次数:125
优先队列
优先队列我们在之前讲过的《堆的基础知识》和《堆排序》之后,我们来讲讲最大堆和最小堆的具体应用优先队列!优先队列基础知识我们来看看这样的场景,给定你一组数据,要你在这组数据里面找到最大的那个数据,你要怎么做? 你可能会说直接遍历一次就行啦,运行时间也就O(n)O(n),但是如果要求你在这堆数据里面找到最大的,然后删除,再在剩下的元素里面找到最大的,那还是要遍历一般所有数据。那有没有其他快速的方法呢?...
分类:其他好文   时间:2015-05-07 22:12:26    阅读次数:204
简单选择排序与堆排序
选择排序的基本运算都是在n个元素组成的序列中,选择一个关键字最大或最小的元素输出,然后再从剩余的n-1个元素中选择一个关键字最大或最小的元素输出,以此类推,直到排序结束。以递增排序为例,简单选择排序过程如下:1第一次在数组中查找最小值a[i],然后将a[i]和a[0]交换位置。 2从a[1]开始,同样从a[1]开始往后找到最小值a[j],然后与a[1]交换位置,依次类推。废话不多说,直接贴代码 ...
分类:编程语言   时间:2015-05-07 14:37:43    阅读次数:127
堆排序
1.堆的概念 参考:http://www.cnblogs.com/luchen927/archive/2012/03/08/2381446.html 堆(heap),一种数据结构,堆分为最大堆和最小堆,其实就是完全二叉树。最大堆要求节点的元素都要大于其孩子,最小堆要求节点元素都小于其左右孩子,两者对左右孩子的大小关系不做任何要求,其实很好理解。有了上面的定义,我们可以得知,处于最大堆的根节点的元...
分类:编程语言   时间:2015-05-07 12:30:53    阅读次数:137
堆排序原理及算法实现(最大堆)
堆排序 堆排序是利用堆的性质进行的一种选择排序。以下先讨论一下堆。1.堆堆实际上是一棵全然二叉树,其不论什么一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即不论什么一非叶节点的keyword不大于或者不小于其左右孩子节点的keyword。 堆分为大顶堆和小顶...
分类:编程语言   时间:2015-05-07 10:25:21    阅读次数:153
【算法导论】堆排序
堆排序的原理: 构建并且维持一个最大堆,然后交换堆的第一个和最后一个元素,每次交换后最大的元素都被移到最后。然后堆的规模减一,继续交换,直到进行到第二个元素。这时排序完成 图解:(图片来源于http://blog.163.com/zhoumhan_0351/blog/static/399542272...
分类:编程语言   时间:2015-05-06 21:01:30    阅读次数:241
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!