20192312 2020-2021-1 实验七 《查找与排序》实验报告
课程:《程序设计与数据结构》
班级: 1923
姓名: 吴欣欣
学号:20192312
实验教师:王志强
实验日期:2020年11月26日
必修/选修: 必修
1.实验内容
1.定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。
要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
提交运行结果图。
2.重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)
3.参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试
提交运行结果截图
4.补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)
测试实现的算法(正常,异常,边界)
提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分)
5.编写Android程序对实现各种查找与排序算法进行测试
提交运行结果截图
推送代码到码云(选做,加分)
2.实验过程及结果
1.定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。
要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
提交运行结果图。
Searching代码
package ex7;
import com.ibm.icu.impl.UResource;
import java.util.Arrays;
import java.util.Scanner;
public class Searching {
int data[];
public Searching(int m[]){
data=m;
}
public int[] Input(){
final int CAPACITY=3;
data=new int[CAPACITY];
int i=0;
Scanner scan=new Scanner(System.in);
System.out.print("输入数组(以*作为结尾):");
while(scan.hasNextInt()){
if(i==data.length)
data= Arrays.copyOf(data,data.length+CAPACITY);
data[i]=scan.nextInt();
i++;
}
scan.next();
return data;
}
public int LinearSearch(int target){
int m[]=Arrays.copyOf(data,data.length+1);
int i,tail=m.length-1;
m[tail]=target;
for(i=0;;i++){
if(m[i]==target)return i+1;
}
}
}
Sorting代码
package ex7;
import java.util.Arrays;
import java.util.Scanner;
public class Sorting {
int []data;
int top;
public Sorting(int m[]){
data=m;
}
public void Input() {
final int CAPACITY = 3;
data= new int[CAPACITY];
Scanner scan = new Scanner(System.in);
int i = 0;
System.out.print("输入数组(以*作为结尾):");
while (scan.hasNextInt()) {
if (i == data.length)
data = Arrays.copyOf(data, data.length + CAPACITY);
data[i] = scan.nextInt();
i++;
}
top=i;
scan.next();
}
public void swap(int []m,int a,int b){
int temp;
temp=m[a];
m[a]=m[b];
m[b]=temp;
}
public void Print(int m[]){
for(int i=0;i
System.out.print(m[i]+" ");
}
System.out.println("");
}
public void SelectionSort(){
int i,j;
for(i=0;i
int temp=i;
for(j=i+1;j
if(data[j]
temp=j;
}
if(temp!=i) {
swap(data, temp, i);
}
}
Print(data);
}
}
2.重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)
3.参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试
提交运行结果截图
Node
package cn.edu.besti.cs1923.W2312;
public class Node {
int index;
public int data;//关键字段
public Node leftNode;//左节点
public Node rightNode;//右节点
public Node() {
index=-1;
this.data = -1;
leftNode = null;
rightNode = null;
}
public Node(int value,int i) {
index=i;
this.data = value;
leftNode = null;
rightNode = null;
}
public int findNode(Node root, int key) {
Node current = root;
while (current.data != key) {
if (key < current.data) {//左节点
current = current.leftNode;
} else {//右节点
current = current.rightNode;
}
if (current == null) {
return -1;
}
}
return current.index+1;
}
public Node InsertNode(int m[]) {