20172311 2018-2019-1《程序設計與數據結構》實驗三報告

20172311 2018-2019-1《程序設計與數據結構》實驗三報告

課程:《程序設計與數據結構》
班級: 1723
姓名: 趙曉海
學號:20172311
實驗教師:王志強
實驗日期:2018年11月19日
必修/選修: 必修html


1.實驗內容

實驗三-查找與排序-1

定義一個Searching和Sorting類,並在類中實現linearSearch(教材P162 ),SelectionSort方法(P169),最後完成測試。
要求很多於10個測試用例,提交測試用例設計狀況(正常,異常,邊界,正序,逆序),用例數據中要包含本身學號的後四位
提交運行結果圖。java

實驗三-查找與排序-2

重構你的代碼
把Sorting.java Searching.java放入 cn.edu.besti.cs1723.(姓名首字母+四位學號) 包中(例如:cn.edu.besti.cs1723.G2301)
把測試代碼放test包中
從新編譯,運行代碼,提交編譯,運行的截圖(IDEA,命令行兩種)android

實驗三-查找與排序-3

參考http://www.cnblogs.com/maybe2030/p/4715035.html 在Searching中補充查找算法並測試
提交運行結果截圖git

實驗三-查找與排序-4

補充實現課上講過的排序方法:希爾排序,堆排序,二叉樹排序等(至少3個)
測試實現的算法(正常,異常,邊界)
提交運行結果截圖算法

實驗三-查找與排序-5(選作,加分)

編寫Android程序對各類查找與排序算法進行測試
提交運行結果截圖
推送代碼到碼雲數組


2.實驗過程及結果

實驗三-查找與排序-1

結果提交截圖:
  • 線性查找代碼:
    數據結構

  • 線性查找測試類代碼:

    app

  • 線性查找測試類運行結果:

    ide

  • 選擇排序代碼:
    學習

  • 選擇排序測試類代碼:


  • 選擇排序測試類運行結果:

實驗最終代碼連接:

SearchingTest
SortingTest

本實驗收穫:

對測試代碼的方法有了更深刻全面的認識,同時也進一步學習了Jnuit測試的使用。


實驗三-查找與排序-2

結果提交截圖:
  • 查找方法的Linux測試:

  • 排序方法的Linux測試:

實驗最終代碼連接:

cn.edu.besti.cs1723.Z2311包裏的查找和排序代碼
test包裏的測試類代碼

本實驗收穫:

由於個人實驗一就是用的Junit測試,因此這個實驗第一部分就比較簡單了;第二部分幫助我從新學習了Linux的一些指令(捂臉笑.jpg)


實驗三-查找與排序-3

結果提交截圖:
  • Searching測試類代碼:

  • Searching測試類運行結果:

實驗最終代碼連接:

Searching
SearchingTest

本實驗收穫:

學習了更多的查找算法,對這些算法的邏輯有了更深刻的認識,同時對這些算法的應用也有了較深的認識。

實驗三-查找與排序-4

結果提交截圖:
  • Sorting測試類代碼:


  • Sorting測試類運行結果:

實驗最終代碼連接:

Sorting
SortingTest

本實驗收穫 :

對於希爾排序,堆排序,二叉樹排序的實現以及各自的應用有了更加深刻的理解。


實驗三-查找與排序-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設計

  • 運行結果截圖:











實驗最終代碼連接:

SearchSort

本實驗收穫:

將IDEA裏實現的算法在Android studio中以app的形式實現,實現了簡單的交互,對面向對象有了更深的認識!


4.感想

繼續努力!努力!

5.參考資料

相關文章
相關標籤/搜索