zoukankan      html  css  js  c++  java
  • 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.参考资料

  • 相关阅读:
    EasyRMS录播管理服务器项目实战:windows上开机自启动NodeJS服务
    EasyPlayer RTSP Windows(with ActiveX/OCX插件)播放器支持H.265播放与抓图功能
    EasyPlayer RTSP Windows(with ActiveX/OCX插件)播放器支持H.265播放与抓图功能
    将EasyRTMP_RTSP移植到Android平台实现的RTSP拉流转推RTMP直播流功能
    将EasyRTMP_RTSP移植到Android平台实现的RTSP拉流转推RTMP直播流功能
    EasyDarwin如何支持点播和RTMP/HLS直播?EasyDSS!
    EasyDarwin如何支持点播和RTMP/HLS直播?EasyDSS!
    EasyCMS在幼儿园视频直播项目实战中以redis操作池的方式应对高并发的redis操作问题
    EasyCMS在幼儿园视频直播项目实战中以redis操作池的方式应对高并发的redis操作问题
    EasyDarwin开源流媒体服务器中一种实现对作用域内new对象自动释放的方法(值得借鉴)
  • 原文地址:https://www.cnblogs.com/zhaoxiaohai/p/10013430.html
Copyright © 2011-2022 走看看