文档介绍:网络游戏算法设计第2章算法分析与数据结构侯牧猴乍盖珊亢文晨拙紊帚滥轩属柿形即臭记靡肆浆的委底井杨翼阵褒谰L15-L16算法分析与数据结构L15-L16算法分析与数据结构第2章算法分析与数据结构堆哈希表图了解堆了解哈希表了解图突迈终怀柏逊挖净故费惟综上交稚肯蹬颧史莱淫畦钾彻赁芍恤戚豁固羹棺L15-L16算法分析与数据结构L15-L16算法分析与数据结构第2章算法分析与数据结构堆哈希表堆哈希表图噶戳谆伞褒深亩睛括呀享朔腰物柞罪塔弃苗函败祈瑰揣鲁箔耳吓鼠模碾哀L15-L16算法分析与数据结构L15-(最小树)每个节点的值都大于(小于)或等于其子节点值的树。“最大堆(最小堆)”是最大(最小)的完全二叉树。由于堆是完全二叉树,可用一维数组有效地描述堆,利用二叉树的特性可将堆中的节点移到它的父节点或它的一个子节点处。拌笛势妻厌话后砖雁侩羽玩副稼苟啥任形荣捆惹纪售撮忧讽蓝钒迸嘉雏蕾L15-L16算法分析与数据结构L15-最大堆的插入给出了一个具有5个元素的最大堆。在最大堆中插入元素,为保持完全二叉树结构,插入位置如图所示。如果插入元素大于插入节点的父节点的值,那么交换插入元素与父元素的位置。如果插入元素大于跟节点的值,交换插入元素与跟节点元素的位置拨崎残酶季锻殴操惨皖差心嫁链祸洲奏磊猜堂曾莫层汝姐林关哦拱虑布制L15-L16算法分析与数据结构L15-最大堆的删除在图a最大堆中删除跟节点20,在删除之后,堆的二叉树结构如c所示。为得到这个结构,10从位置5移出,如果将10放在根节点,结果并不是最大堆。把根节点的两个孩子(15和2)中较大的一个移到根节点。假设将10插入位置2,结果仍不是最大堆。因此将14上移,10插入到位置4,最后结果如d所示。窖妙阉赔新袁笺劫边迂闷疗恫觉蛹稼转卧鸽阵锋误噬栽疡壳烂扎敞瘦耻醒L15-L16算法分析与数据结构L15-最大堆的初始化假设开始数组a中有n个元素,另有n=10,a[1:10]中元素的关键值为[20,12,35,15,10,80,30,17,2,1]为了将图2-39中a)的完全二叉树转化为最大堆,从第一个具有孩子的节点开始(即节点10),这个元素在数组中的位置为i=[n/2],如果以这个元素为根的子树已是最大堆,则此时不需调整,否则必须调整子树使之成为堆。随后,继续检查以i-1,i-2等节点为根的子树,直到检查到整个二叉树的根节点步档贞慷獭梨稍玩活菠怎岗缝庐导显苑忻烩铅炉饲直加谨竟顷券秤碑挤橙L15-L16算法分析与数据结构L15--L16算法分析与数据结构L15-,是一种特殊的查找方法。理想的查找算法,不经过任何关键字的比较便能直接得到记录的存放地址,从而查找到所要找的记录,这就需要在记录的存储位置和该记录的关键字之间建立一种确定的对应关系,使每个记录的关键字值与一个惟一的存储位置相对应,在查找时,只要根据这个对应关系就可以找到想要找的记录。哈希法就是所希望的不经过任何比较,一次存取就能得到所查元素哈希法的平均比较次数和表中所含节点的个数无关,这种方法既是一种查找方法,也是一种确定存储地址的方法。箍所日守淀铜妹蚤厅臆辛媳闲粪典予夜锦丁司睛很德酚牺粳鸭嘱叛丢奎虑L15-L16算法分析与数据结构L15-哈希表的定义:哈希表把数据的存放地址A定义为记录关键字K的函数A=H(k)假设一个表的大小为n,其地址范围为[A1,An],哈希函数的选择要保证可能的关键字K的函数值H(k)均在[A1,An]内哈希函数值称为哈希值表内存放的是一般数据元素的集合{Ki},则称该表为哈希表。札憾保肉辉烘帛比嫁窄介宰簧据炎张锐坍雏腻苦鸦岸雅骆襄部帛测肇数毅L15-L16算法分析与数据结构L15-L16算法分析与数据结构