实用标准文案精彩文档广东金融学院实验报告课程名称:数据结构实验编号及实验名称实验二:排序和查找实验系别计算机科学与技术系姓名学号班级实验地点实验日期实验时数6指导教师同组其他成员无成绩一、实验目的及要求1、通过编写和调用直接插入排序、希尔排序、冒泡排序和快速排序四种排序算法实现数据排序,充分理解各种排序算法的算法思想、排序过程及各自的时间复杂度、稳定性。2、通过编写和调用顺序查找和二分查找算法实现数据查找,掌握两个查找算法的基本思想、实现方法和时间性能。二、实验环境及相关情况(包含使用软件、实验设备、主要仪器及材料等)1、实验设备:微型计算机;2、软件系统:WindowsXP、DWMX。三、实验内容(一)排序(1)参照课本,分别编写Java程序,实现顺序表记录类RecordNode、类KeyType。(2)参照课本,编写一个Java程序,实现顺序表类SeqList,并在其中添加成员函数:length()求顺序表的当前长度;display()输出数组元素的关键字;直接插入排序算法;带监视哨的直接插入排序;希尔排序算法;起泡排序算法;快速排序算法。(3)编写主程序,循环选择调用以上5个排序算法,对数组元素排序,并输出排序过程。(二)查找(1)在排序实验的基础上,在类SeqList中添加成员函数:不带监视哨的顺序查找算法;带监视哨的顺序查找算法;二分查找算法。(2)编写主程序,循环选择调用以上3个查找算法,分别对键入的关键字记录进行成功和不成功查找publicclassKeyTypeimplementsComparable
{privateintkey;publicKeyType(){}publicKeyType(intkey){this.key=key;}publicintgetKey(){returnkey;}publicvoidsetKey(intkey){this.key=key;}装订线○○○○○○第2页共10页publicStringtoString(){returnkey+"";}publicintcompareTo(KeyTypeanother){intthisVal=this.key;intanotherVal=another.key;return(thisValcurlen){thrownewException("插入位置不合理");}for(intj=curlen;j>i;j--){r[j]=r[j-1];}r[i]=x;this.curlen++;}publicvoidinsertSort(){//直接插入RecordNodetemp;inti,j;for(i=1;i=0&&temp.getKey().compareTo(r[j].getKey())<0;j--){r[j+1]=r[j];}r[j+1]=temp;}}publicvoidshellSort(int[]d){//希尔RecordNodetemp;inti,j;for(intk=0;k=0&&temp.getKey().compareTo(r[j].getKey())<0;j-=dk){r[j+dk]=temp;}第4页共10页}}}publicvoidinsertSortWithGuard(){//带监视哨的直接插入inti,j;for(i=1;i0){temp=r[j];r[j]=r[j+1];r[j+1]=temp;flag=true;}}}}publi...