文档介绍:word
word
1 / 11
word
○○○
○○○
装订线
某某金融学院实验报告
课程名称:数据结构
实验编号
与实验名称
实验二:排序和查找实验
系 别
计算机科学与技术系
姓 名
学 号
班 级
实验地点
实验日期
实验时数
6
指导教师
同组其他成员
无
成 绩
一、实验目的与要求
通过编写和调用直接插入排序、希尔排序、冒泡排序和快速排序四种排序算法实现数据排序,充分理解各种排序算法的算法思想、排序过程与各自的时间复杂度、稳定性。
2、 通过编写和调用顺序查找和二分查找算法实现数据查找,掌握两个查找算法的根本思想、实现方法和时间性能。
二、实验环境与相关情况〔包含使用软件、实验设备、主要仪器与材料等〕
1、实验设备:微型计算机;2、软件系统:Windows XP、DWMX。
三、实验内容
排序
〔1〕参照课本,分别编写Java程序,实现顺序表记录类RecordNode、类KeyType。
〔2〕参照课本,编写一个Java程序,实现顺序表类SeqList,并在其中添加成员函数:
length()求顺序表的当前长度; display()输出数组元素的关键字;直接插入排序算法;带监视哨的直接插入排序;希尔排序算法;起泡排序算法;快速排序算法。
〔3〕编写主程序,循环选择调用以上5个排序算法,对数组元素排序,并输出排序过程。
〔二〕查找
〔1〕在排序实验的根底上,在类SeqList中添加成员函数:不带监视哨的顺序查找算法;带监视哨的顺序查找算法;二分查找算法。
〔2〕编写主程序,循环选择调用以上3个查找算法,分别对键入的关键字记录进展成功和不成功查找
publicclass KeyType implements parable<KeyType>{
privateintkey;
public KeyType(){
}
public KeyType(int key){
=key;
}
publicint getKey(){
returnkey;
}
publicvoid setKey(int key){
=key;
word
word
2 / 11
word
}
public String toString(){
returnkey +"";
}
publicint pareTo(KeyType another){
int thisVal=;
int anotherVal=;
return(thisVal<anotherVal? -1:(thisVal==anotherVal? 0:1));
}
}
publicclass RecordNode{
privateparablekey;
private Object element;
public Object getElement(){
returnelement;
}
publicvoid setElement(Object element){
=element;
}
publicparable getKey(){
returnkey;
}
publicvoid setKey(parable key){
=key;
}
public RecordNode(parable key){
=key;
}
public RecordNode(parable key,Object element){
=key;
=element;
}
}
publicclass SeqList{
private RecordNode[]r;
privateintcurlen;
public SeqList(int maxSize){
=new RecordNode[maxSize];
=0;
}
public RecordNode[]getRecord(){
word
word
3 / 11
word
returnr;
}
publicvoid setRecord(RecordNode[]r){
=r;
}
publicint length(){
returncurlen;
}
publicvoid display(){
for(int i=0;i<curlen;i++){
System.