武汉纺织大学数据结构实验报告4
更新时间:2024-04-10 21:48:01 阅读量: 综合文库 文档下载
武汉纺织大学《数据结构》实验报告
班级: 信管 专业 班 姓名: 学号: 实验时间: 年 月 日 指导教师:
实验四:查找操作与应用
一、实验目的:
1、掌握顺序查找、折半查找、哈希查找的基本方法和操作过程 2、掌握查找效率的分析方法
二、实验内容:
1、编写程序,实现顺序查找操作,可参考书本P260示例程序。 实验步骤:
①、在Java语言编辑环境中新建程序,建立一个顺序表(表长10),依次输入10个数据元素(对元素存放的先后顺序没有要求),并按照存储顺序输出所有元素;
②、输入带查找关键字,在顺序表中进行顺序查找; ③、输出查找结果。
2、编写程序,实现有序表折半查找操作,可参考书本P263示例程序。 实验步骤:
①、在Java语言编辑环境中新建程序,建立一个顺序表(表长10),依次输入10个数据元素(要求所有元素按照递增顺序排列),并按照存储顺序输出所有元素;
②、输入带查找关键字,在有序表中进行折半查找; ③、输出查找结果。
3、编写程序,实现哈希表查找操作。 实验步骤:
①、在Java语言编辑环境中新建程序,建立一个顺序表(表长12),依次输入10个数据元素,并按照存储顺序输出所有元素; ②、输入带查找关键字,在哈希表中进行查找; ③、输出查找结果。
已知:哈希函数为H(key)=key MOD 11,采用开放地址法、线性探测再散列解决冲突,输入元素为{ 55,19,31,23,68,20,27,9,10,79}。
三、操作步骤: 1.顺序查找
(1)将顺序查找方法添加入SeqList.java中
//顺序表查找关键字为key元素,返回首次出现的元素,若查找不成功返回-1 //key可以只包含关键字数据项,由 T 类的equals()方法提供比较对象相等的依据 public int indexOf(T key){
if(key != null)
for(int i=0;i if(this.element[i].equals(key))//对象采用equals()方法比较 return i; 是否相等 return -1;//空表,key为空对象或者未找到时 } public T search(T key) {//查找,返回首次出现的关键字为key的元素 int find = this.indexOf(key); } return find == -1?null:(T)this.element[find]; (2)Linearsearch.java package search; import java.util.Scanner; /** * * @author pang * */ public class Linearsearch { public static void main(String[] args){ SeqList } } System.out.println(list.toString()); System.out.println(\输入要查找的数:\); Scanner scan = new Scanner(System.in); while(true){ int key = scan.nextInt(); System.out.println(\顺序查找: \+list.search(key)); } (3)运行结果 2.折半查找 (1)将折半查找方法添加入SeqList.java中 //在按升序排序的数组中,折半查找关键字为key元素,若找到返回下标,否则返回-1 public int binarySearch(T key){ int begin = 0; int end = this.len-1; if(key != null) while(begin<=end){//边界有效 int mid = (begin+end)/2;//中间位置,当前比较元素位置 System.out.print(element[mid]+\); if(Integer.parseInt(element[mid].toString())==(Integer) key)//对象比较大小 return mid;//查找成功 if(Integer.parseInt(element[mid].toString())-(Integer) end = mid-1;//查找范围缩小到前半段 else begin = mid+1;//查找范围缩小到后半段 key>0)//给定对象小 } return -1;//查找不成功 } (2)Binarysearch.java package search; import java.util.Scanner; /** * * @author pang * */ public class Binarysearch { public static void main(String[] args){ SeqList System.out.println(list.toString()); System.out.println(\输入要查找的数:\); Scanner scan = new Scanner(System.in); while(true){ } int key = scan.nextInt(); System.out.print(\折半查找: \); System.out.println(list.binarySearch(key)); } } (3)运行结果 3.哈希查找 (1)将构造哈希表和哈希查找的方法加入SeqList.java中 //除留余数法计算哈希值,构造哈希表 public void hash(int x,int y){ int h = x % y; if(Integer.parseInt(element[h].toString())==0)//该位置为空,不冲突 this.set(h, x);//此处为set(int x,int y)的方法,与原set方法有一定 差别 else//冲突 hash(h+1,y);//开放地址法、线性探测再散列解决冲突 } //哈希查找 public int hashSearch(int key,int y){ int h = key % y;//计算哈希值作为下标 for(int i=1;i<=y;i++) if(Integer.parseInt(element[h].toString())==0)//(0代表该位置为 空)若查找位置为空,查找失败 return -1; else if(Integer.parseInt(element[h].toString())==key)//若查找位 置正好为key,查找成功 return h; } else//若查找位置有值,但不等于key,解决冲突,继续查找 h=h+i; return hashSearch(h,y); (2)Hashsearch.java package search; import java.util.Scanner; /** * * @author pang * */ public class Hashsearch { public static void main(String[] args){ SeqList list.hash(55,11); list.hash(19,11); list.hash(31,11); list.hash(23,11); list.hash(68,11); list.hash(20,11); list.hash(27,11); list.hash(9,11); list.hash(10,11); list.hash(79,11); System.out.println(list.toString()); System.out.println(\输入要查找的数:(0表示该位置为空)\); Scanner scan = new Scanner(System.in); list.append(0); } } while(true){ } int key = scan.nextInt(); System.out.println(list.hashSearch(key,11)); (3)运行结果 四、实验收获和建议:
正在阅读:
武汉纺织大学数据结构实验报告404-10
机场春运文章02-15
基于NIOSII的I2C总线接口技术03-08
2018年全国重大天气过程总结和预报技术经验交流会-中国气象学会 - 图文09-30
论基督教与犹太教上帝观的区别11-16
湖北省监利一中2009届高三物理9月月考03-08
投稿常用网址03-11
苏教版六年级下册语文教案05-26
北师大版五年级下册数学第五单元《分数混合运算》试题03-24
冬天优美说说11-20
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 数据结构
- 武汉
- 实验
- 纺织
- 报告
- 大学
- 四语下课内阅读练习
- 观花、观果、观叶植物 - 图文
- 河南省病历书写基本规范实施细则
- 速度滑冰直道滑跑技术讲座
- 上海教师资格证三门专业课纲要
- 塔韩项目“找差距,抓整改,促提升”活动方案
- 衡水中学2018高考英语3500乱序(多套)及正序背记表(可打印)
- Retinex1
- 变制冷剂流量空调系统在实际应用中的几个设计问题
- 第六章 同步电机及微控电机
- Delphi 的RTTI机制浅探(续)
- 潍坊市教学能手
- 最新版人力资源管理师二级教材第五章:薪酬管理 - 图文
- 什么是片段教学
- 内蒙古自治区财政厅关于进一步规范政府采购货物类项目综合评分法
- 中考试题研究(重庆专版)2016中考物理 第二部分 题型研究 专题
- 虾类养殖项目可行性研究报告
- 电压比较器资料
- 基于JAVA的ATM模拟系统代码
- 实验十二(文件服务器配置动态磁盘和磁盘配额)