预览加载中,请您耐心等待几秒...
1/3
2/3
3/3

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第PAGE\*MERGEFORMAT9页堆排序课件PPT.ppt1、进入夏天,少不了一个热字当头,电扇空调间续登场,每逢此时,总会想起那一把蒲扇。蒲扇,是记忆中的农村,夏季经常用的一件物品。记忆中的家乡,每逢进入夏天,集市上最常见的便是蒲扇、凉席,不管男女老少,个个手持一把,忽闪忽闪个不停,嘴里叨叨着“怎么这么热”,于是三五成群,聚在大树下,或站着,或随即坐在石头上,手持那把扇子,边唠嗑边乘凉。孩子们却在四周跑跑跳跳,热得满头大汗,不时听到“强子,别跑了,快来我给你扇扇”。孩子们才不听这一套,跑个没完,直到累气喘吁吁,这才一跑一踮地围过了,这时母亲总是,好像生气的样子,边扇边训,“你看热的,跑什么?”此时这把蒲扇,是那么凉快,那么的温馨奇特,有母亲的味道!蒲扇是中国传统工艺品,在我国已有三千年多年的历史。取材于棕榈树,制作简洁,便利携带,且蒲2、扇的外表光滑,因此,古人常会在上面作画。古有棕扇、葵扇、蒲扇、蕉扇诸名,实即今日的蒲扇,江浙称之为芭蕉扇。六七十年月,人们最常用的就是这种,似圆非圆,轻松又廉价的蒲扇。蒲扇流传至今,我的记忆中,它跨越了半个世纪,也走过了我们的半个人生的轨迹,携带着特有的念想,一年年,一每天,流向长长的时间隧道,袅堆排序对于具有n个结点的完全二叉树,假如依据从上至下,每层从左至右的次序,对结点进行编号,则编号为i的结点有以下性质:若i≤n/2,即2i≤n,则编号为i的结点为分支结点,否则为叶子结点若n为奇数,则树中每个分支结点既有左孩子又有右孩子;若n为偶数,则编号最大的分支结点(编号为n/2)只有左孩子,没有右孩子,其余分支结点左、右孩子都有若编号为i的结点有左孩子,则左子结点的编号为2i;若编3、号为i的结点有右孩子则右子结点为2i+1除树根结点外,若一个结点的编号为i,则它的双亲结点的编号为i/2堆的定义n个元素的序列{k1,k2,…,kn}当且仅当满足如下关系时,称之为堆〔heap〕。若满足条件〔1〕则称大根堆〔或大顶堆〕;若满足条件〔2〕则称小根堆〔或小顶堆〕。若将和此序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字均不大于(或不小于)其左右孩子(若存在)结点的关键字。【例1】将10个元素组成的序列{34,39,20,65,47,12,98,73,81,56}建成大根堆。将序列看成是完全二叉树的按层次遍历结果,建立完全二叉树;自下向上将完全二叉树调整为大根堆〔动画演示〕堆的删除——删4、除堆顶元素将堆尾元素写入堆顶;自上而下调整受影响的子树,使每一棵有变动的子树都符合堆的要求;假如调整后转变了的子树的根结点,则连续调整相应的子树直到堆的叶子结点。【例2】删除堆顶元素9898348120215673396547473481202156733965813447202156733965813473202156473965813473202156653947直接选择排序基本思想:将数据元素序列分成有序区和无序区两部分。每趟排序都从无序区中选取出关键字最小的数据元素放在有序区的最终,直到全部数据元素排序完毕。要点:把元素集合划分为有序区和无序区初始时,有序区为空每趟排序过程中,从无序区中选出关键字最小的数据元素与无序区的第一个元素交换,以到达扩大有序区长度的目的。堆排序堆排序(H5、eapSort)是一树形选择排序,利用大根堆(或小根堆)堆顶元素最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简洁。堆排序的一般步骤〔以结果为非递减序列为例〕将待排序序列R[l..n]看成是一棵完全二叉树的挨次存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系,创建对应的完全二叉树;将第①步创建的完全二叉树调整为小根堆;利用小根堆的特性,从堆中提取最小值并删除根;重新调整删除根的堆为新堆,重复第③步直到堆的长度为零;将每次提取的根依次排列即为有序序列。【例3】用堆排序将序列{20,60,26,30,36,10}调整为递增序列。构建小根堆;提取堆顶并调整删除堆顶后的元素为新堆;重复第2步,直至堆空。每次提取的堆顶依次排列即为递增序列。将序列{20,606、,26,30,36,10}构建小根堆;202660103630202160263630202130263660102030263660102030263660输出102620303660202630366020263036603626306026363060输出20212030263660小根堆的递增输出序列303660输出3036603660输出36输出6060递增输出序列为:102026303660263630606036303036