哈希娱乐 行业新闻 党建先锋

哈希游戏平台数据结构于算法分析 第8章 Hash法

发布时间:2026-02-05 13:08:29  浏览:

  哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏

哈希游戏平台数据结构于算法分析 第8章 Hash法

  首先将列表分成若干个块(子表)。一般 情况下,块的长度均匀, 最后一块可以不 满。每块中元素任意排列,即块内无序,但 块与块之间有序。 构造一个索引表。其中每个索引项对应一 个块并记录每块的起始位置,以及每块中的 最大关键字(或最小关键字)。索引表按关 键字有序排列。

  下图为一个索引顺序表。其中包括三个块,第一个 块的起始地址为0,块内最大关键字为25;第二个块 的起始地址为5, 块内最大关键字为58;第三个块的 起始地址为10,块内最大关键字为88。

  显然,在二叉排序树上进行查找,若查找成功, 则是从根结点出发走了一条从根到待查结点的路 径。若不成功,则是从根结点出发走了一条从根 到某个叶子结点的路径。因此,二叉排序树的查 找与折半查找过程类似,在二叉排序树中查找一 个记录时,其比较次数不超过树的深度。 对长度为n的有序表而言,折半查找对应的判定 树是唯一的,而含有n个结点的二叉排序树却是 不唯一的。因为对于同一个关键字集合,关键字 插入的先后次序不同,所构成的二叉排序树的形 态和深度也可能不同。

  二叉排序树的特性:根据二叉排序树的定义(左 子树小于根结点,右子树大于根结点),根据二 叉树的中序遍历的定义(先中序遍历左子树,访 问根结点,再中序遍历右子树),因此,中序遍 历一个二叉排序树,可以得到一个递增有序序列。 中序遍历下面的二叉排序树,则可得到一个递增 有序序列为:1,2,3,4,5,6,7,8,9。

  分块查找的平均查找长度由两部分构成, 即查找 索引表时的平均查找长度为LB,以及在相应块内 进行顺序查找的平均查找长度为LW: ASLbs=LBLW 假定将长度为n的表分成b块,且每块含s个元素, 则b=n/s。又假定表中每个元素的查找概率相等, 则每个索引项的查找概率为1/b,块中每个元素的 查找概率为1/s。若用顺序查找法确定待查元素所 在的块,则有 s 1 b b 1 s 1 LB   j  , LW  i  b j 1 2 2 i 1

  其中Pi为查找列表中第i个数据元素的概率,Ci 为找到列表中第i个数据元素时,已经进行过 的关键字比较次数。由于查找算法的基本运算 是关键字之间的比较操作,所以可用平均查找 长度来衡量查找算法的性能。

  ① 查找对象K(找什么); ② 查找范围L(在哪找); ③ K在L中的位置(查找的结果)。

  其中①、②为输入参量, ③为输出参量,在函数中, 输入参量必不可少,输出参量也可用函数返回值表示。

  平均查找长度:为确定数据元素在列表中的位 置, 需和给定值进行比较的关键字个数的期 望值,称为查找算法在查找成功时的平均查找 长度。

  查找的基本概念 基于线性表的查找法 基于树的查找法 计算式查找法——哈希法 要点小结

  查找的基本概念 基于线性表的查找法 基于树的查找法 计算式查找法——哈希法 要点小结

  由于判定树的叶子结点所在层次之差最多为1,故n个 结点的判定树的深度与n个结点的完全二叉树的深度相 等,均为 1。这样,折半查找成功时,关键字 比较次数最多不超过 1。相应地,折半查找失 败时的过程对应判定树中从根结点到某个含空指针的 结点的路径,因此,折半查找成功时,关键字比较次 数最多也不超过判定树的深度 1。为便于讨论, 假定表的长度n=2h-1,则相应判定树必为深度是h的满 二叉树,h=log2(n1)。又假设每个记录的查找概率相 等, 则折半查找成功时的平均查找长度为:

  熟练掌握顺序表和有序表的查找方法及其平均查 找长度的计算方法; 复习二叉排序树的构造和查找方法; 熟练掌握哈希表的构造方法,深刻理解哈希表与 其它结构的表的实质性的差别; 掌握按定义计算各种查找方法在等概率情况下查 找成功时的平均查找长度。

  【算法分析】用平均查找长度(ASL)分析折半查 找算法的性能。折半查找过程可用一个称为判定 树的二叉树描述,判定树中每一结点对应表中一 个记录,但结点值不是记录的关键字,而是记录 在表中的位置序号。根结点对应当前区间的中间 记录, 左子树对应前一子表,右子树对应后一子 表。 显然,找到有序表中任一记录的过程,对应判定 树中从根结点到与该记录相应结点的路径,而所 做比较的次数恰为该结点在判定树上的层次数。 因此,折半查找成功时,关键字比较次数最多不 超过判定树的深度。

  顺序查找法的特点是,用所给关键字与线性表 中各元素的关键字逐个比较,直到成功或失败。 存储结构通常为顺序结构,也可为链式结构。

  由此可见,二叉排序树的平均查找长度ASL与二叉排 序树的形态有关。在最坏的情况下,二叉排序树是通 过把一个有序表的n个结点一次插入生成的,由此得到 的二叉排序树脱化为一棵深度为n的单支树,它的平均 查找长度和单链表上的顺序查找相同,也是(n1)/2。 在最好的情况下,二叉排序树在生成过程中,树的形 态比较均匀,最终得到的是一棵形态与折半查找的判 定树相似的二叉排序树,其平均查找长度大约是log2n。 若考虑把n个结点按各种可能的次序插入到二叉排序树 中,则有n!棵二叉排序树(其中有的形态相同),可 以证明,对这些二叉排序树的查找长度求平均,其平 均查找长度仍然是O(log2n)。

  因为二叉排序树可看作是一个有序表,所以在 二叉排序树上进行查找与折半查找类似,也是 一个逐步缩小查找范围的过程。 根据二叉排 序树的特点,首先将待查关键字k与根结点关 键字t进行比较,如果:

  下图,(a)所示为数字值间的比较,(b)所示为 单词字符的ASCII码间的比较。

  折半查找法又称为二分法查找法,这种方法要 求待查找的列表必须是按关键字大小有序排列 的顺序表。其基本过程是:

  将表中间位置记录的关键字与查找关键字比较, 如果两者相等,则查找成功; 否则利用中间位置记录将表分成前、后两个子表, 如果中间位置记录的关键字大于查找关键字,则 进一步查找前一子表,否则进一步查找后一子表。 重复以上过程,直到找到满足条件的记录,使查 找成功,或直到子表不存在为止,此时查找不成 功。

  比较式查找法 基于线性表的查找法 基于树的查找法 计算式查找法 也称为HASH(哈希)查找法

  分块查找的基本过程如下: 首先,将待查关键字K与索引表中的关键字进 行比较, 以确定待查记录所在的块。具体的可 用顺序查找法或折半查找法进行。 进一步用顺序查找法,在相应块内查找关键字 为K的元素。 例如,在上述索引顺序表中查找36。首先,将36 与索引表中的关键字进行比较,因为25<36≤58, 所以36在第二个块中, 进一步在第二个块中顺序 查找, 最后在8号单元中找到36。

  二叉排序树的平均查找长度ASL与二叉排序树的形态有关, 二叉排序树的各分支越均衡,树的深度浅,其平均查找长度 ASL就越小。假设每个元素的查找概率相等,则它们的平均 查找长度分别是:

  查找: 根据给定的关键字值,在特定的列表 中确定一个其关键字与给定值相同的数据元素, 并返回该数据元素在列表中的位置。

  若找到相应的数据元素, 则称查找是成功的,否 则称查找是失败的,此时应返回空地址及失败信 息,并可根据要求插入这个不存在的数据元素。

  静态查找:指在查找过程中只是对数据元素进行 查找 动态查找:指在实施查找的同时,插入找不到的 元素,或从查找表中删除查到的某个元素,即允 许元素变化。

  二叉树排序又称二叉查找树,它是一种特殊的 树。其定义为:二叉树排序树或者是一棵空树, 或者是具有如下性质的二叉树:

  若它的左子树非空, 则左子树上所有结点的值均 小于根结点的值; 若它的右子树非空, 则右子树上所有结点的值均 大于根结点的值; 它的左右子树也分别为二叉排序树。

  列表:由同一类型的数据元素(或记录)构成 的集合, 可利用任意数据结构实现。 关键字:数据元素的某个数据项的值,用它可 以标识列表中的一个或一组数据元素。如果一 个关键字可以唯一标识列表中的一个数据元素, 则称其为主关键字,否则为次关键字。当数据 元素仅有一个数据项时, 数据元素的值就是 关键字。