码迷,mamicode.com
首页 >  
搜索关键字:堆排序    ( 1851个结果
选择排序
一,选择排序 选择排序算法有两种:直接选择排序和堆排序.二,直接选择排序 1.基本思想:第一趟从n个元素的数据序列中选出关键字最大(或最小)的元素并放在最后(或最前)位置,下一趟再从n-1个元素中选择出最大(小)的元素并放在次后(前)位置.以此类推,经过n-1趟完成排序.直接选择算法可用顺序表和.....
分类:编程语言   时间:2015-02-08 16:50:47    阅读次数:222
八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较...
分类:编程语言   时间:2015-02-07 22:59:47    阅读次数:281
【算法】希尔排序C语言实现
上一篇文章我们一起学习了直接插入排序,它的原理就是把前i个长度的序列变成有序序列,然后循环迭代,直至整个序列都变为有序的.但是说来说去它还是一个时间复杂度为(n^2)的算法,难道就不能再进一步把时间复杂度降低一阶么?可能有很多同学说快速排序,堆排序,我都会,这些简单的插入排序我都不屑于用.确实,以上几种算法相对于之前的O(n^2)级别的算法真的是弱爆了,效率可能还会差上千万倍,但是我们不妨翻看一下...
分类:编程语言   时间:2015-02-06 16:56:28    阅读次数:121
Go语言标准库堆(heap)封装及堆排序实现
Go语言的OOP,接口,接口的组合,基础库的函数及接口如何抽象设计, 这些东西在Go的Heap源码及演示例子处理中,都有很好的展示. 在"container/heap"中,它的接口是如下定义的: type Interface interface { sort.Interface Push(x interface{}) // add x as element Len() Pop() interface{} // remove and return eleme...
分类:编程语言   时间:2015-02-05 16:22:40    阅读次数:262
堆与堆排序—优先队列
上一节我们写了树以及二叉树的知识 http://blog.csdn.net/wtyvhreal/article/details/43487095 堆是一种特殊的完全二叉树。 所有父节点都比子节点要小,这样的完全二叉树称为最小堆,反之叫最大堆。 下图一棵完全二叉树,调整为最小堆步骤: 向下调整的代码如下: 从上面可以得到:调...
分类:编程语言   时间:2015-02-04 18:50:47    阅读次数:159
堆排序—大根堆,小根堆
1.小根堆 若根节点存在左子女则根节点的值小于左子女的值;若根节点存在右子女则根节点的值小于右子女的值。 2.大根堆 若根节点存在左子女则根节点的值大于左子女的值;若根节点存在右子女则根节点的值大于右子女的值。 3.结论 (1)堆是一棵完全二叉树(如果公有h层,那么1~h-1层均满,在h层连续缺失若干个右叶子)。 (2)小根堆的根节点的值是最小值,大根堆的根节点的值是最大值。 (3)...
分类:编程语言   时间:2015-02-02 21:34:38    阅读次数:208
堆排序(JAVA)
package?org.rev.algorithm; /** ?*?堆排序,时间复杂度为O(nlogn),是利用堆的性质进行的一种选择排序。 ?*? ?*?大顶堆是一个完全二叉树,所有的父节点都大于或等于它的左右子节点,即a[i]>=a[2i+1]&&a[...
分类:编程语言   时间:2015-02-02 16:14:38    阅读次数:191
算法系列笔记1(排序)
本次主要记录一些经典的排序算法,其中包括冒泡排序、直接选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序、桶排序以及计数排序和基数排序。首先会给出这些排序算法的基本思想,然后给出实现的代码,最后会给出其时间复杂度。 1:冒泡排序 思想: (1):比较相邻的前后两个元素,如果后面的数据小于前面的数据,则交换这两个数据的位置。这样经过一次遍历,最小的元素将在第0个位置,属于”冒泡”. (...
分类:编程语言   时间:2015-01-29 17:39:27    阅读次数:288
各种排序时间空间复杂度稳定性分析
下面是常见排序算法的速度比较:(从慢到快) 1、冒泡排序O(N^2) 2、简单选择排序O(N^2) 3、直接插入排序O(N^2) 4、折半插入排序O(N^2) 5、希尔排序,近似为O(N^1.25)     (尚无定论,但可以确定是N~N^2之间的多项式时间复杂度) 6、堆排序O(NlogN) 7、归并排序O(NlogN) 8、快速排序O(NlogN) 一般来说是快排最快的。但是...
分类:编程语言   时间:2015-01-29 09:34:09    阅读次数:274
排序比较
各种排序运行时间比较以下表格展现各算法的运行时间:算法最坏情况运行时间平均情况/期望运行时间插入排序θ(n2)θ(n2)归并排序θ(nlgn)θ(nlgn)堆排序O(nlgn)—快速排序θ(n2)θ(nlgn)建立一个类,将之前写的各种排序算法纳入其中,Code如下: class SortMe...
分类:编程语言   时间:2015-01-28 21:04:02    阅读次数:337
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!