20172311 2018-2019-1《程序设计与数据结构》实验三报告
课程:《程序设计与数据结构》
班级: 1723
姓名: 赵晓海
学号:20172311
实验教师:王志强
实验日期:2018年11月19日
必修/选修: 必修
1.实验内容
实验三-查找与排序-1
定义一个Searching和Sorting类,并在类中实现linearSearch(教材P162 ),SelectionSort方法(P169),最后完成测试。
要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位
提交运行结果图。
实验三-查找与排序-2
重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1723.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1723.G2301)
把测试代码放test包中
重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)
实验三-查找与排序-3
参考http://www.cnblogs.com/maybe2030/p/4715035.html 在Searching中补充查找算法并测试
提交运行结果截图
实验三-查找与排序-4
补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)
测试实现的算法(正常,异常,边界)
提交运行结果截图
实验三-查找与排序-5(选做,加分)
编写Android程序对各种查找与排序算法进行测试
提交运行结果截图
推送代码到码云
2.实验过程及结果
实验三-查找与排序-1
结果提交截图:
-
线性查找代码:
-
线性查找测试类代码:
-
线性查找测试类运行结果:
-
选择排序代码:
-
选择排序测试类代码:
-
选择排序测试类运行结果:
实验最终代码链接:
本实验收获:
对测试代码的方法有了更深入全面的认识,同时也进一步学习了Jnuit测试的使用。
实验三-查找与排序-2
结果提交截图:
-
查找方法的Linux测试:
-
排序方法的Linux测试:
实验最终代码链接:
cn.edu.besti.cs1723.Z2311包里的查找和排序代码
test包里的测试类代码
本实验收获:
因为我的实验一就是用的Junit测试,所以这个实验第一部分就比较简单了;第二部分帮助我重新学习了Linux的一些指令(捂脸笑.jpg)
实验三-查找与排序-3
结果提交截图:
-
Searching测试类代码:
-
Searching测试类运行结果:
实验最终代码链接:
本实验收获:
学习了更多的查找算法,对这些算法的逻辑有了更深入的认识,同时对这些算法的应用也有了较深的认识。
实验三-查找与排序-4
结果提交截图:
-
Sorting测试类代码:
-
Sorting测试类运行结果:
实验最终代码链接:
本实验收获 :
对于希尔排序,堆排序,二叉树排序的实现以及各自的应用有了更加深入的理解。
实验三-查找与排序-5
两个Activity代码:
- MainActivity代码:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText Arrayinput=(EditText)findViewById(R.id.editText1);
final EditText Eleminput=(EditText)findViewById(R.id.editText2);
final EditText Result=(EditText)findViewById(R.id.editText3);
Button Trans=(Button)findViewById(R.id.button);
Button search2=(Button)findViewById(R.id.button2);
Button search3=(Button)findViewById(R.id.button3);
Button search4=(Button)findViewById(R.id.button4);
Button search5=(Button)findViewById(R.id.button5);
Button search6=(Button)findViewById(R.id.button6);
Button search8=(Button)findViewById(R.id.button8);
//顺序查找
search2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String []array=Arrayinput.getText().toString().split("\s+");
int[]array1=new int[array.length];
for (int a=0;a<array.length;a++){
array1[a]=Integer.valueOf(array[a]);
}
int target=Integer.valueOf(Eleminput.getText().toString());
int result=Searching.SequenceSearch(array1,target,array.length);
String out;
if (result==-1)
out="数组中不存在元素"+target;
else
out="元素"+target+"在数组中索引为"+result;
Result.setText(out);
}
});
//二分查找
search3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String []array=Arrayinput.getText().toString().split("\s+");
int[]array1=new int[array.length];
for (int a=0;a<array.length;a++){
array1[a]=Integer.valueOf(array[a]);
}
int target=Integer.valueOf(Eleminput.getText().toString());
int result=Searching.BinarySearch1(array1,target,array.length);
String out;
if (result==-1)
out="数组中不存在元素"+target;
else
out="元素"+target+"在数组中索引为"+result;
Result.setText(out);
}
});
//插值查找
search4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {String []array=Arrayinput.getText().toString().split("\s+");
int[]array1=new int[array.length];
for (int a=0;a<array.length;a++){
array1[a]=Integer.valueOf(array[a]);
}
int target=Integer.valueOf(Eleminput.getText().toString());
Boolean result=Searching.InsertionSearch(array1,target);
String out;
if (result==false)
out="数组中不存在元素"+target;
else
out="数组中有元素"+target;
Result.setText(out);
}
});
//树表查找
search5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String []array=Arrayinput.getText().toString().split("\s+");
int[]array1=new int[array.length];
for (int a=0;a<array.length;a++){
array1[a]=Integer.valueOf(array[a]);
}
int target=Integer.valueOf(Eleminput.getText().toString());
Boolean result=Searching.TreeSearch(array1,target);
String out;
if (result==false)
out="数组中不存在元素"+target;
else
out="数组中有元素"+target;
Result.setText(out);
}
});
//哈希查找
search6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String []array=Arrayinput.getText().toString().split("\s+");
int[]array1=new int[array.length];
for (int a=0;a<array.length;a++){
array1[a]=Integer.valueOf(array[a]);
}
int target=Integer.valueOf(Eleminput.getText().toString());
int result=Searching.hashsearch(array1,target);
String out;
if (result==-1)
out="数组中不存在元素"+target;
else
out="元素"+target+"在数组中索引为"+result;
Result.setText(out);
}
});
//斐波那契查找
search8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String []array=Arrayinput.getText().toString().split("\s+");
int[]array1=new int[array.length];
for (int a=0;a<array.length;a++){
array1[a]=Integer.valueOf(array[a]);
}
int target=Integer.valueOf(Eleminput.getText().toString());
int result=Searching.FibonacciSearch(array1,target,array.length);
String out;
if (result==-1)
out="数组中不存在元素"+target;
else
out="元素"+target+"在数组中索引为"+result;
Result.setText(out);
}
});
//跳转到排序界面
Trans.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
});
}
}
- Main2Activity代码:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
final EditText Arrayinput=(EditText)findViewById(R.id.editText4);
final EditText Result=(EditText)findViewById(R.id.editText5);
Button sort1=(Button)findViewById(R.id.button9);
Button sort2=(Button)findViewById(R.id.button10);
Button sort3=(Button)findViewById(R.id.button11);
//希尔排序
sort1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String []array=Arrayinput.getText().toString().split("\s+");
Integer[]array1=new Integer[array.length];
for (int a=0;a<array.length;a++){
array1[a]=Integer.valueOf(array[a]);
}
Sorting.ShellSort(array1);
String out="";
for (int a=0;a<array1.length;a++)
out+=array1[a]+" ";
Result.setText(out);
}
});
//堆排序
sort2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String []array=Arrayinput.getText().toString().split("\s+");
Integer[]array1=new Integer[array.length];
for (int a=0;a<array.length;a++){
array1[a]=Integer.valueOf(array[a]);
}
Sorting.HeapSort(array1);
String out="";
for (int a=0;a<array1.length;a++)
out+=array1[a]+" ";
Result.setText(out);
}
});
//二叉树排序
sort3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String []array=Arrayinput.getText().toString().split("\s+");
Integer[]array1=new Integer[array.length];
for (int a=0;a<array.length;a++){
array1[a]=Integer.valueOf(array[a]);
}
Sorting.BinaryTreeSort(array1);
String out="";
for (int a=0;a<array1.length;a++)
out+=array1[a]+" ";
Result.setText(out);
}
});
}
}
结果提交截图:
- layout设计
- 运行结果截图:
实验最终代码链接:
本实验收获:
将IDEA里实现的算法在Android studio中以app的形式实现,实现了简单的交互,对面向对象有了更深的认识!
4.感想
继续努力!努力!