数据结构课程设计——综合查找算法的实现.docVIP

数据结构课程设计——综合查找算法的实现.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计——综合查找算法的实现

目录 目录 2 一、问题描述 4 二、问题分析 5 三、数据结构描述 5 四、算法设计 6 1、流程图 6 2、具体算法 6 五、详细程序清单 9 六、程序运行结果 20 一、问题描述 1、顺序表查找的问题描述 顺序查找又称为线性查找,它是一种最简单、最基本的查找方法。从顺序表的一端开始,依次将每一个数据元素的关键字值与给定Key进行比较,若某个数据元素的关键字值等于给定值Key,则表明查找成功;若直到所有的数据元素都比较完毕,仍找不到关键字值为Key的数据元素,则表明查找失败。 2、有序表的查找问题描述 折半查找也称为二分查找,作为二分查找对象的数据必须是顺序存储的有序表,通常假定有序表是按关键字值从小到大排列有序,即若关键字值为数值,则按数值有序;若关键字值是字符数据,则按对应的Unicode码有序。二分查找的基本思想:首先取整个有序表的中间记录的关键字值与给定值相比较,若相等,则查找成功;否则以位于中间位置的数据元素为分界点,将查找表分为左右两个子表,并判断待查找的关键字值Key是在左子表还是在右子表,再在子表中重复上述步骤,直到待查找的关键字值Key的记录或子表长度为0。 3、哈希表查找的问题描述 在哈希表上进行查找的过程是要给定要查找的关键字的值,根据构造哈希表时设定的哈希函数求得哈希地址,若此哈希地址上为空,即没有数据元素,则查找不成功;否则比较关键字,若相等,则查找成功;若不相等,则根据构造哈希表时设置的处理冲突的方法找下一个地址,知道某个位置上为空或者关键字比较相等为止。 哈希表是在关键字和存储位置之间直接建立了映像,但由于冲突的产生,哈希表的查找过程仍然是一个和关键字比较的过程。因此,仍需用平均查找长度来衡量哈希表的查找效率。查找过程中与关键字比较的次数取决于构造哈希表是选择的哈希函数和处理冲突的方法。哈希函数的“好坏”首先影响出现冲突的频率,假设哈希函数是均匀的,即它对同样一组随机的关键字出现冲突的可能性是相同的。因此哈希表的查找效率主要取决于构造哈希表时处理冲突的方法。 4、二叉排序树的查找问题描述 在顺序表的3种查找方法中,二分查找具有最高的效率,但是由于二分查找要求表中记录按关键字有序,且不能用链表做存储结构,因此当表的插入、删除操作非常频繁时,为维护表的有序性,需要移动表中很多记录。这种由移动记录引起的额外时间开销,就会抵消二分查找的优点。这里讨论的不仅是二叉排序树具有二分查找的效率,同时又便于在查找表中进行记录的增加和删除操作。 5、界面设计模块问题描述 设计一个菜单模式界面,让用户可以选择要查找的方式,界面上还有退出按钮,可以退出程序。界面要求简洁明了,便于使用。 6、按钮动作命令模块问题描述 在设计好图形界面后,就必须对相应的按钮进行事件驱动程序设计。运行Java图形用户界面程序时,程序与用户交互,比如说,在框架中显示多个按钮,当点击按钮时,就会从按钮触发一个事件。同时,查找的操作必须要有输入和输出,则需要使用对话框和命令窗口进行输入关键字和输出结果。 二、问题分析 按钮时事件的源。图形界面中一共有5个按钮,先注册按钮,再创建监听器对象,当按钮上有行为要发生时,按钮通过监听器的actionPerformed方法通知监听器。点击按钮会使监听器中actionPerformed方法被调用。 首先,点击一个按钮,从e.getActionCommand()方法从按钮返回行为命令,按钮的行为命令就是按钮的文本。调用各查找方法,之后输出查找结果。 拿“顺序表的查找”按钮来说,点击之后,如果按钮的行为命令是顺序表的查找,则按顺序表的特点先建立一个存储结构为20的顺序表,利用JOptionPane.showInputDialog弹出输入对话框,让用户输入表长,定义一个整形变量强制转化获取到字符串型的输入。 然后利用java.util.Scanner类从控制台读关键字的序列,存放在记录顺序表中。 利用对话框输入待查找的关键字,强制转化成KeyType型。 最后,调用顺序查找的seqSearch方法,利用JOptionPane.showMessageDialog输出运行查找结果。 三、数据结构描述 public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); ........ //顺序表的查找 if (command.equals(顺序表的查找)) { ......... } //有序表的动作实现 if (command.equals(有序表的查找)) { ............. } //

文档评论(0)

wyjy + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档