20192319 2020-2021-1《数据结构及面向对象程序设计》实验七报告
实验七报告
- 课程:《程序设计与数据结构》
- 班级: 1923
- 姓名: 李歆韵
- 学号:20192319
- 实验教师:王志强
- 实验日期:2020年11月18日
- 必修/选修: 必修
1.实验内容
-
定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。
要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
提交运行结果图。
重构你的代码 -
把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种) -
参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试
提交运行结果截图 -
补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)
测试实现的算法(正常,异常,边界)
提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分) -
编写Android程序对实现各种查找与排序算法进行测试
提交运行结果截图
推送代码到码云(选做,加分)
2.实验过程与结果
- 定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。
要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
代码:
public class Searching {
private int List[];
private int searchElement;
private int listSize;
private int locate;
public Searching(int[] list, int searchElement) {
List = list;
this.searchElement = searchElement;
listSize= List.length;
}
public String linearSearch(){
for (int i=listSize-1;;i--){
if (searchElement==List[i]){
locate=i;
return "Element founded: " + "List[" + i + "]";
}
else if (i==0){
if (searchElement==List[i]){
locate=i;
return "Element founded: " + List[i];
}
else
return "Not founded.";
}
}
}
}
import java.util.Arrays;
public class Sorting{
private int List[];
private int size;
public Sorting(int[] list) {
List = list;
size=List.length;
}
public String selectionSort(){
int temp = 0,tempx;
for (int i=0;i<size-1;i++){
temp=i;
for (int j=i+1;j<size;j++){
if (List[temp]>List[j]){
temp=j;
}
}
if (temp == 0) {
continue;
}
else {
tempx=List[i];
List[i]=List[temp];
List[temp]=tempx;
}
}
return Arrays.toString(List);
}
}
- 把Sorting.java Searching.java放入 cn.edu.besti.cs1823.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301)
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)
代码:
import sy7.sy7_2.cn.edu.besti.cs1923.L2319.Searching;
import sy7.sy7_2.cn.edu.besti.cs1923.L2319.Sorting;
import junit.framework.TestCase;
public class test extends TestCase{
@org.junit.Test
public void testSearching(){
int a1[]={11,2,1,1,1,1,1,1,1,1,1,2319};
int a2[]={12,1,2,1,1,1,1,1,1,1,1,2319};
int a3[]={13,1,1,2,1,1,1,1,1,1,1,2319};
int a4[]={14,1,1,1,2,1,1,1,1,1,1,2319};
int a5[]={15,1,1,1,1,2,1,1,1,1,1,2319};
int a6[]={16,1,1,1,1,1,2,1,1,1,1,2319};
int a7[]={17,2,1,1,1,1,1,2,1,1,1,2319};
int a8[]={18,1,2,1,1,1,1,1,2,1,1,2319};
int a9[]={19,1,1,2,1,1,1,1,1,2,1,2319};
int a10[]={20,1,1,1,2,1,1,1,1,1,2,2319};
assertEquals(new Searching(a1,2).linearSearch(),"Element found: " + "List[" + 1 + "]");
assertEquals(new Searching(a1,11).linearSearch(),"Element found: " + "List[" + 0 + "]");
assertEquals(new Searching(a1,2319).linearSearch(),"Element found: " + "List[" + 11 + "]");
assertEquals(new Searching(a1,404).linearSearch(),"Not found.");
assertEquals(new Searching(a2,2).linearSearch(),"Element found: " + "List[" + 2 + "]");
assertEquals(new Searching(a2,12).linearSearch(),"Element found: " + "List[" + 0 + "]");
assertEquals(new Searching(a2,2319).linearSearch(),"Element found: " + "List[" + 11 + "]");
assertEquals(new Searching(a2,404).linearSearch(),"Not found.");
assertEquals(new Searching(a3,2).linearSearch(),"Element found: " + "List[" + 3 + "]");
assertEquals(new Searching(a3,13).linearSearch(),"Element found: " + "List[" + 0 + "]");
assertEquals(new Searching(a3,2319).linearSearch(),"Element found: " + "List[" + 11 + "]");
assertEquals(new Searching(a3,404).linearSearch(),"Not found.");
assertEquals(new Searching(a4,2).linearSearch(),"Element found: " + "List[" + 4 + "]");
assertEquals(new Searching(a4,14).linearSearch(),"Element found: " + "List[" + 0 + "]");
assertEquals(new Searching(a4,2319).linearSearch(),"Element found: " + "List[" + 11 + "]");
assertEquals(new Searching(a4,404).linearSearch(),"Not found.");
assertEquals(new Searching(a5,2).linearSearch(),"Element found: " + "List[" + 5 + "]");
assertEquals(new Searching(a5,15).linearSearch(),"Element found: " + "List[" + 0 + "]");
assertEquals(new Searching(a5,2319).linearSearch(),"Element found: " + "List[" + 11 + "]");
assertEquals(new Searching(a5,404).linearSearch(),"Not found.");
assertEquals(new Searching(a6,2).linearSearch(),"Element found: " + "List[" + 6 + "]");
assertEquals(new Searching(a6,16).linearSearch(),"Element found: " + "List[" + 0 + "]");
assertEquals(new Searching(a6,2319).linearSearch(),"Element found: " + "List[" + 11 + "]");
assertEquals(new Searching(a6,404).linearSearch(),"Not found.");
assertEquals(new Searching(a7,2).linearSearch(),"Element found: " + "List[" + 7 + "]");
assertEquals(new Searching(a7,17).linearSearch(),"Element found: " + "List[" + 0 + "]");
assertEquals(new Searching(a7,2319).linearSearch(),"Element found: " + "List[" + 11 + "]");
assertEquals(new Searching(a7,404).linearSearch(),"Not found.");
assertEquals(new Searching(a8,2).linearSearch(),"Element found: " + "List[" + 8 + "]");
assertEquals(new Searching(a8,18).linearSearch(),"Element found: " + "List[" + 0 + "]");
assertEquals(new Searching(a8,2319).linearSearch(),"Element found: " + "List[" + 11 + "]");
assertEquals(new Searching(a8,404).linearSearch(),"Not found.");
assertEquals(new Searching(a9,2).linearSearch(),"Element found: " + "List[" + 9 + "]");
assertEquals(new Searching(a9,19).linearSearch(),"Element found: " + "List[" + 0 + "]");
assertEquals(new Searching(a9,2319).linearSearch(),"Element found: " + "List[" + 11 + "]");
assertEquals(new Searching(a9,404).linearSearch(),"Not found.");
assertEquals(new Searching(a10,2).linearSearch(),"Element found: " + "List[" + 10 + "]");
assertEquals(new Searching(a10,20).linearSearch(),"Element found: " + "List[" + 0 + "]");
assertEquals(new Searching(a10,2319).linearSearch(),"Element found: " + "List[" + 11 + "]");
assertEquals(new Searching(a10,404).linearSearch(),"Not found.");
System.out.println("Searching test passed.");
}
@org.junit.Test
public void testSorting(){
int a1[] = {1,4,5,2319,8};
int a2[] = {4,5,99,2,2319};
int a3[] = {2319,2318};
int a4[] = {4,5,0,2319,1,2};
int a5[] = {25,18,33,65,1,2319};
int a6[] = {44,22,2319,8,47,54};
int a7[] = {27,33,55,23,2319};
int a8[] = {28,19,48,33,2319};
int a9[] = {32,55,76,45,2319};
int a10[] = {45,67,55,23,2319,24};
assertEquals("[1, 4, 5, 8, 2319]",new Sorting(a1).selectionSort());
assertEquals("[2, 4, 5, 99, 2319]",new Sorting(a2).selectionSort());
assertEquals("[2318, 2319]",new Sorting(a3).selectionSort());
assertEquals("[0, 1, 2, 4, 5, 2319]",new Sorting(a4).selectionSort());
assertEquals("[1, 18, 25, 33, 65, 2319]",new Sorting(a5).selectionSort());
assertEquals("[8, 22, 44, 47, 54, 2319]",new Sorting(a6).selectionSort());
assertEquals("[23, 27, 33, 55, 2319]",new Sorting(a7).selectionSort());
assertEquals("[19, 28, 33, 48, 2319]",new Sorting(a8).selectionSort());
assertEquals("[32, 45, 55, 76, 2319]",new Sorting(a9).selectionSort());
assertEquals("[23, 24, 45, 55, 67, 2319]",new Sorting(a10).selectionSort());
System.out.println("Sorting test passed.");
}
}
-
参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试
提交运行结果截图
-
补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)
测试实现的算法(正常,异常,边界)
提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分)
3.其它
这次的实验涉及到多种查找和排序的方法,不同的方法有不同的逻辑和效率,当我们需要进行更高层次的编程工作的时候,就需要锻炼逻辑思维能力,掌握较为复杂但是能够提高程序性能的算法。