图解堆排序 摘要: 作为选择排序的改进版,堆排序可以把每一趟元素的比较结果保存下来,以便我们在选择最小/大元素时对已经比较过的元素做出相应的调整。 堆排序是一种树形选择排序,在排序过程中可以把元素看成是一颗完全二叉树,每个节点都大(小)于它的两个子节点,当每个节点都大于等于它的两个子节点时,就称为大 ...
分类:
编程语言 时间:
2016-04-11 13:59:22
阅读次数:
325
堆排序是一种树形选择排序,是对直接选择排序的有效改进。 基本思想: 堆的定义如下:具有n个元素的序列(k1,k2,...,kn),当且仅当满足 时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最小项(小顶堆)。 若以一维数组存储一个堆,则堆对应一棵完全二叉树,且所有非叶结点的值均不大于(
分类:
编程语言 时间:
2016-03-18 21:36:13
阅读次数:
200
分类 :(一)插入类排序:直接插入排序,折半插入排序,希尔排序(二)交换类排序:冒泡排序,快速排序(三)选择类排序:简单选择排序,树形选择排序,堆排序(四)归并排序:归并排序(五)分配类排序二、插入类排序:(一)思想:在一个已经排好序的序列中,将未被排进的元素按照原先的规定插入到指定位置。(二)分类...
分类:
编程语言 时间:
2015-11-07 12:15:40
阅读次数:
395
1.简单排序2.树形选择排序思想:将一个数组中的数两两一组,更大的数(或者更小的数)作为这两个数的父节点,依次向上构建一个完全二叉树。树的根结点即为最大的数。输出该数字之后,对应的叶子结点换成负无穷。然后在此基础上重新构建二叉树,直到所有结点均为负无穷为止。复杂度:第一个值的复杂度为n,其他值的复杂...
分类:
编程语言 时间:
2015-08-10 23:44:29
阅读次数:
230
1.三种选择排序(简单选择排序,树形选择排序,堆排序)#include#include#include#include#include#include #includeconst int INF=0X3f3f3f3f;using namespace std;typedef struct{ int.....
分类:
编程语言 时间:
2015-07-26 11:05:56
阅读次数:
112
堆排序是一种树形选择排序,是对直接选择排序的有效改进。
堆是一种数据结构,其定义:任何一个非叶结点的值,都不大于(或不小于)其左右孩子结点的值。若父亲大孩子小,则这样的堆叫做大顶堆;若父亲小孩子大,则这样的堆叫做小顶堆。顾名思义,大顶堆的根结点的值是最大的,小顶堆的根结点的值是最小的。基本思想首先,将一个无序序列调整为大顶堆(小顶堆),我们就找到了这个无序序列的最大(或最小)值,然后将这个值交换到...
分类:
编程语言 时间:
2015-07-18 11:03:33
阅读次数:
142
堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子结点之间的内在关系,在当前无序区中选择关键字最大(最小)的元素。1. 若array[0,...,n-1]表示一颗完全二叉树的顺序存储模式,.....
分类:
编程语言 时间:
2015-07-13 22:18:12
阅读次数:
217
1.算法介绍 堆排序是一种树形选择排序,是对直接选择排序的有效改进。 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]...
分类:
编程语言 时间:
2015-07-12 20:20:51
阅读次数:
161
http://blog.csdn.net/yj_1989/article/details/46598579http://blog.csdn.net/yj_1989/article/details/46598581http://blog.csdn.net/yj_1989/article/details...
分类:
编程语言 时间:
2015-06-23 06:17:19
阅读次数:
182
每次 从待排序序列中选择出一个最大(或者最小)的记录添加到有序序列的后面即为选择排序。 选择排序主要有:简单选择排序、树形选择排序、堆排序。1、简单选择排序基本思路:重复进行n趟选择,第i趟通过n-i次记录的比较,在n-i+1个记录中选取最小(或最大)的记录与第i个记录进行交换。void se...
分类:
编程语言 时间:
2015-04-28 08:16:43
阅读次数:
120