20172311 2018-2019-1《程序设计与数据结构》实验三报告

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

结果提交截图:
  • 线性查找代码:

  • 线性查找测试类代码:

  • 线性查找测试类运行结果:

  • 选择排序代码:

  • 选择排序测试类代码:


  • 选择排序测试类运行结果:

实验最终代码链接:

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.参考资料

原文地址:https://www.cnblogs.com/zhaoxiaohai/p/10013430.html