收藏 分销(赏)

数据结构实验五-查找与排序的实现.doc

上传人:人****来 文档编号:4384388 上传时间:2024-09-18 格式:DOC 页数:4 大小:45.50KB 下载积分:5 金币
下载 相关 举报
数据结构实验五-查找与排序的实现.doc_第1页
第1页 / 共4页
数据结构实验五-查找与排序的实现.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
实 验 报 告 课程名称   数据结构   实验名称  查找与排序得实现             系别       专业班级       指导教师11           学号       姓名     实验日期            实验成绩      一、实验目得 (1) 掌握交换排序算法(冒泡排序)得基本思想; (2) 掌握交换排序算法(冒泡排序)得实现方法; (3) 掌握折半查找算法得基本思想; (4) 掌握折半查找算法得实现方法; 二、实验内容 1. 对同一组数据分别进行冒泡排序,输出排序结果。要求: 1) 设计三种输入数据序列:正序、反序、无序 2) 修改程序: a) 将序列采用手工输入得方式输入 b) 增加记录比较次数、移动次数得变量并输出其值,分析三种序列状态得算法时间复杂性 2. 对给定得有序查找集合,通过折半查找与给定值k相等得元素。 3. 在冒泡算法中若设置一个变量lastExchangeIndex来标记每趟排序时经过交换得最后位置,算法如何改进? 三、设计与编码 1、本实验用到得理论知识 2、算法设计 3、编码 package sort_search; import java、util、Scanner; public class Sort_Search {   //冒泡排序算法 ﻩpublic void BubbleSort(int r[]){ int temp; ﻩ int count=0,move=0; ﻩ boolean flag=true; ﻩ for(int i=1;i〈r、length&&flag;i++){ ﻩﻩ flag=false; ﻩﻩ count++; ﻩ for(int j=0;j<r、length-i;j++){ if(r[j]>r[j+1]){ ﻩ temp=r[j]; ﻩ ﻩﻩr[j]=r[j+1]; r[j+1]=temp; ﻩﻩ move++; flag=true; ﻩ ﻩ } ﻩﻩﻩ} ﻩ } ﻩﻩSystem、out、println("排序后得数组为:”); ﻩ for(int i=0;i〈r、length;i++){ ﻩ ﻩSystem、out、print(r[i]+" ”); ﻩ } System、out、println(); ﻩ System、out、println("比较次数为:"+count); ﻩﻩSystem、out、println("移动次数为:”+move); } ﻩpublic static int BinarySearch(int r[],int key){    //折半查找算法 ﻩ int low=0,high=r、length-1; ﻩ while(low<=high){ ﻩ int mid=(low+high)/2; ﻩ ﻩif(r[mid]==key){ ﻩreturn mid; ﻩﻩ} ﻩﻩelse if(r[mid]>key){ high=mid—1; ﻩﻩ } ﻩﻩ else{ ﻩﻩﻩlow=mid+1; ﻩﻩ} ﻩ} ﻩﻩreturn -1; ﻩ}   //测试 public static void main(String[] args) { ﻩ Sort_Search ss=new Sort_Search(); int t[]=new int[13]; ﻩ System、out、println(”依次输入13个整数为:"); ﻩ Scanner sc=new Scanner(System、in); ﻩfor(int i=0;i〈t、length;i++){ ﻩﻩt[i]=sc、nextInt(); ﻩ} ﻩﻩSystem、out、println("排序前得数组为: "); ﻩ for(int i=0;i<t、length;i++){ ﻩ System、out、print(t[i]+" ”); ﻩ } ﻩSystem、out、println(); ﻩﻩss、BubbleSort(t);    //查找 ﻩwhile(true){ ﻩﻩSystem、out、println("请输入要查找得数: ”); ﻩ ﻩint k=sc、nextInt(); ﻩif(BinarySearch(t,k)>0) System、out、println(k+" 在数组中得位置就是第: "+      BinarySearch(t,k)); ﻩﻩelse ﻩﻩSystem、out、println(k+” 在数组中查找不到!"); ﻩ   } ﻩ  } } 四、运行与调试 1. 在调试程序得过程中遇到什么问题,就是如何解决得? 问题:在计算比较次数与移动次数时,计算数据明显出错。 原因:在进行移动与比较得过程中,没有更新标志,导致计数出错。 解决办法:在比较与移动得过程中,有进行比较与移动得操作时,更新标志.然后按标志计数。 2. 设计了哪些测试数据?预计结果就是什么?说明: 测试了int类型数据: 241 17 23 45 37 4 31 43 11 89 33 101 177 预计排序后结果为:4 11 17 23 31 33 37 43 45 89 101 177 241  比较次数:  ①无序:8次    ②正序:1次    ③反序:12次  移动次数:   ①无序:30次 ②正序:0次   ③反序:78次      查找数33得位置为:5   查找数101得位置为:10 查找数100得结果为:查找不到 3. 程序运行得结果如何  I、无序输入: II、正序输入: III、反序输入: 五、总结与心得 六、思考题 已知奇偶转换排序如下:第一趟对所有奇数得i,将a[i]与a[i+1]进行比较,第二趟对所有偶数得i,将a[i]与a[i+1]进行比较,每次比较时若a[i]〉a[i+1],则将二者交换,以后重复上述二趟过程交换进行,直至整个数组有序.   a)试问排序结束得条件就是什么? b)实现上述排序过程得算法如何?(请用自然语言、代码、伪代码写出该算法)
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服