课程:《程序设计与数据结构》
班级: 1723
姓名: 赵晓海
学号:20172311
实验教师:王志强
实验日期:2018年11月19日
必修/选修: 必修html
定义一个Searching和Sorting类,并在类中实现linearSearch(教材P162 ),SelectionSort方法(P169),最后完成测试。
要求很多于10个测试用例,提交测试用例设计状况(正常,异常,边界,正序,逆序),用例数据中要包含本身学号的后四位
提交运行结果图。java
重构你的代码
把Sorting.java Searching.java放入 cn.edu.besti.cs1723.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1723.G2301)
把测试代码放test包中
从新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)android
参考http://www.cnblogs.com/maybe2030/p/4715035.html 在Searching中补充查找算法并测试
提交运行结果截图git
补充实现课上讲过的排序方法:希尔排序,堆排序,二叉树排序等(至少3个)
测试实现的算法(正常,异常,边界)
提交运行结果截图算法
编写Android程序对各类查找与排序算法进行测试
提交运行结果截图
推送代码到码云数组
线性查找代码:
数据结构
线性查找测试类代码:
app
线性查找测试类运行结果:
ide
选择排序代码:
学习
选择排序测试类代码:
选择排序测试类运行结果:
对测试代码的方法有了更深刻全面的认识,同时也进一步学习了Jnuit测试的使用。
查找方法的Linux测试:
排序方法的Linux测试:
cn.edu.besti.cs1723.Z2311包里的查找和排序代码
test包里的测试类代码
由于个人实验一就是用的Junit测试,因此这个实验第一部分就比较简单了;第二部分帮助我从新学习了Linux的一些指令(捂脸笑.jpg)
Searching测试类代码:
Searching测试类运行结果:
Sorting测试类代码:
Sorting测试类运行结果:
对于希尔排序,堆排序,二叉树排序的实现以及各自的应用有了更加深刻的理解。
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); } }); } }
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); } }); } }
将IDEA里实现的算法在Android studio中以app的形式实现,实现了简单的交互,对面向对象有了更深的认识!
继续努力!努力!