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

哈希娱乐第3章 算法与数据结构(五)

发布时间:2025-05-12 20:10:07  浏览:

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

哈希娱乐第3章 算法与数据结构(五)

  • 查找与排序是计算机最频繁的操作,特别是大 量数据的数据处理领域。 • 排序和查找是两个密切相关、很基本的技术。 • 查找和排序一般数据结构比较简单,主要是算 法问题。在早期计算机内存紧张,速度慢时, 对程序员尤其重要。如今CPU快速、内存大, 相对重要性降低。但是作为学习编程,“想得 到它就写得出算法来”还是非常有意义的,还 可以开阔思路。它包含了许多编程技巧的精髓。

  为了确定数据元素在查找表中的位臵,需要将给定 值和表中的数据元素的关键字进行比较的次数的期望值。 平均查找长度ASL的计算方法为:

  n 为表长;Pi为查找第i个元素的概率。Ci为找到 该记录时,曾和给定值比较过的数据元素的个数。 在等概率条件下(Pi=1/n)这时平均查找长度为: 1 n ASL   Ci n i 1

  构造:将关键码分割成位数相同的几部分,然后 取这几部分的叠加和(舍去进位)做哈希地址 种类 – 移位叠加:将分割后的几部分低位对齐相加

  – 间界叠加:从一端沿分割界来回折送,然后对 齐相加 适于关键码位数很多,且每一位上数字分布大致 均匀情况

  静态查找表: 查找表一旦建立,在以后的查找过 程中就不会改变。它所对应的查找算法属于静态 查找技术。 动态查找表:查找表建立后,在后来的查找过程 中仍会改变查找表的内容。它所对应的查找算法 属于动态查找技术。 动态查找的例子——词汇统计问题。就是统 计一篇文章中使用了多少词汇以及每个词汇的使 用次数。 解决方法是先建立一个空的查找表,以后每 读到一个词就在查找表中查询一下,如果该词汇 存在则将其使用次数加一,否则将新词插入到查 找表中并设使用次数为一次。显然,这个查找表 是不断扩张的。

  首先将待查值k和表中间位臵上的结点关键 字进行比较,若两者相等,则查找成功; 否则,若k值小,则在表的前半部分中继续 利用折半查找法查找,若k值大,则在表的后半 部分中继续利用折半查找法查找 这样,经过一次关键字比较缩小一半的查 找区间,如此进行下去,直到查找到该关键字 或查找失败。

  • 哈希表——应用哈希函数,由记录的关键码 确定记录在表中的地址,并将记录放入此地 址。 • 哈希查找——又叫散列查找,利用哈希函数 进行查找的过程。

  • 哈希函数只是一种映象,所以哈希函数的设 定很灵活,只要使任何关键码的哈希函数值 都落在表长允许的范围之内即可 • 冲突:key1key2,但H(key1)=H(key2)的现 象 • 同义词:具有相同函数值的两个关键码哈希 函数冲突不可避免,只能尽量减少。所以, 哈希方法解决两个问题:

  哈希函数——在记录的关键码与记录的存储地址之 间建立的一种对应关系,哈希函数可写成: addr(ai)=H(ki)。 按照存储的方法去查找:你是如何存储的你就如何去 查找,回忆一下:你是如何找存折?如何找钱包?

  查找表是具有一定存储结构的数据集合,比如顺序 表结构、链式结构、树形结构等。 查找往往根据数据元素的某个属性进行。例如根据 学号查找某个学生记录。这种被用于查找的元素属 性一般称为关键字,它往往可以唯一标识一个元素。

  构造:取关键码或关键码的某个线性函数作哈希地址, 即H(key)=key 或 H(key)=a· keyb 例如:取学号作为关键字,哈希函数H(k)=k(-230000) 查找学号230009记录,只需查23=9 项即可 特点 –直接定址法所得地址集合与关键字集合大小相等, 不会发生冲突 –实际中能用这种哈希函数的情况很少

  比较次数: 查找第n个元素: 1 查找第n-1个元素:2 ………. 查找第1个元素: n 查找第i个元素: n1-i 查找失败: n1

  在记录的存储地址和它的关键码之间建立一个确定 的对应关系;这样,不经过比较,一次存取就能得 到所查元素的查找方法

  计算哈希函数所需时间 关键码长度 哈希表长度(哈希地址范围) 关键码分布情况 记录的查找频率

  构造:取关键码被某个不大于哈希表表长m的数p 除后所得余数作哈希地址, 即H(key)=key MOD p,pm • 特点 –简单、常用,可与上述几种方法结合使用 –p的选取很重要;p选的不好,容易产生同义 词,一般取不大于m的最大素数。

  构造:对关键码进行分析,取关键码的若干位或 其组合作哈希地址 适于关键码位数比哈希地址位数大,且可能出现 的关键码事先知道的情况

  排序是计算机内经常进行的一种操作,其目的是将 一组同类型的记录序列调整为按照元素关键字有序的记 录序列。例如将学生记录按学号排序,将课程记录按课 程编码排序。 排序的形式化定义为:假设含n个记录的序列为{ R1, R2,…,Rn },其相应的关键字序列为{ K1, K2,…,Kn }。 这些关键字相互之间可以进行比较,即在它们之间存在 着这样一个关系Kp1≤Kp2≤…≤Kpn,按此固有关系将最初 的记录序列重新排列为{ Rp1, Rp2, …,Rpn }的操作称作 排序。