《数据结构及算法》第8章学生信息查找.ppt

《数据结构及算法》第8章学生信息查找.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3.3.9业务实现---索引查找 所有学生信息查询所需次数统计: 应用索引查找的思想,对所有学生成绩信息查询一次的循环次数的累计。代码实现如下: public int BlockSearch_all() { int times=0; for(int i=0 ;i<Max;i++) { BlockSearch(sx[i].st_sx,3, sx[i]); times=times+seach_times; } return times; } 3.3.10业务实现---索引查找 算法分析: 3.3.11查找算法比较 ASL 最大 最小 两者之间 表结构 有序表、无序表 有序表 分块有序表 存储结构 顺序存储结构 线性链表 顺序存储结构 顺序存储结构 线性链表 查找方法比较 顺序查找 折半查找 分块查找 3.4.1业务实现---哈希查找 问题分析: 我们从所给的查找表中的数据,以关键字联系电话,很难找到合理的规律。不能利用前面的二分查找和索引查找来解决问题。好像只能通过顺序查找来解决问题,但顺序查找很浪费时间,当数据量很大时,一个个进行比较,效率极低。 我们注意观察10个学生的电话号码的末尾数各不相同,按电话号码的末尾数由小到大组成新的查找表(例如末尾数为0,对应新查找表下标为0,末尾数为1,对应新查找表下标为1,……,末尾数为9,对应下标为9)。 当我们输入要查找的电话号码,取其末尾数与新查找表对应的元素进行比较(末尾数为0与下标为0的元素比较,……,末尾数为9与下标为9的元素比较)若相等则查找成功,否则查找失败(即所输入的电话号码与对应下标的电话号码不一致)。 可见使用这样的查找方法只须作一次比较,就会等到结果,显然效率大大提高。 3.4.2业务实现---哈希查找 具体步骤如下: 构建哈希查找表类。 初始化学生信息数组。 构建哈希函数,实现哈希表的初始化。 哈希查找方法的实现。 3.4.3业务实现---哈希查找 构建哈希查找结点类: 定义哈希查找结点类,其主要的属性如下: public class Haxi { public int Key;//块关键字:成绩 public Student_info Data;//数据元素:学生成绩信息 public Haxi(Student_info elem) { Key=elem.st_phone;//关键字赋值 Data=elem;//构造学生对象 } } 3.4.4业务实现---哈希查找 哈希查找业务类 : 哈希查找业务类用以实现学生信息按电话号码进行查找的业务处理,代码如下: public class Hx_Search { public Student_info [] sx; //初始的学生信息表 public Haxi []hx; //学生信息顺序哈希查找表 public Haxi_Link []hx_L; //学生信息链式哈希查找表 public StudentManger Ba=new StudentManger (); //创建数据控制层对象 public int Max; //记录学生信息的最大长度 public int seach_times=0; //记录每次查找次数 public Hx_Search() { Init(); } public void Init(){}//初始化学生信息表 public void Hx_fun()//哈希函数,初始化哈希查找表 public int Hx_all()//实现所有学生查询统计 public int Hx_search (int K, Student_info Elem){} //实现单个学生信息哈希查询 } 3.4.5业务实现---哈希查找 学生信息表的初始化: public void Init() { Max=Ba.Max; sx=new Student_info[Max]; //初始化学生信息数组 for (int i=0;i<Max;i++) //逐个初始化学生信息数组元素 { sx[i]=Ba.base_info[i]; //初始化学生信息数组的每个元素 } } 3.4.6业务实现---哈希查找 哈希函数实现: 用以实现构建哈希查找表,共哈希查找作准备。 public void Hx_fun() {//构建哈希函数 int i,j; hx=new Haxi[Max]; for(i=0;i<Max;i++)//逐个取出原始数据 { j=sx[i].st_phone%10;//为每个原始数据进行哈希变换 hx[j]=new Haxi ( sx[i]);//构建新的哈希表 }

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档