課程:《程序設計與數據結構》
班級: 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的形式實現,實現了簡單的交互,對面向對象有了更深的認識!
繼續努力!努力!