20202306 实验七 《查找与排序》

发布时间:2022-06-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了20202306 实验七 《查找与排序》脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

# 20202306 2021-2022-1 《数据结构与面向对象程序设计》实验七报告课程:《程序设计与数据结构》班级: 2023姓名: 李金城学号:20202306实验教师:王志强实验日期:2021年11月12日必修/选修: 必修## 1.实验内容

  1. 定义一个SeArching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。 要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位 提交运行结果图。

  2. 重构你的代码 把Sorting.java Searching.java放入 cn.edu.besti.cs2023.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301) 把测试代码放test包中 重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)

  3. 参考http://www.cnblogs.COM/maybe2030/p/4715035.htML ,学习各种查找算法并在Searching中补充查找算法并测试 提交运行结果截图

  4. 实现排序方法等(至少3个) 测试实现的算法(正常,异常,边界) 提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分)

  5. 编写AndROId程序对实现各种查找与排序算法进行测试 提交运行结果截 推送代码到码(选做,额外加分)

## 2. 实验过程及结果
1.定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试

20202306 实验七 《查找与排序》

20202306 实验七 《查找与排序》

 码云链接:https://e.gITee.com/besti-cs/repos/besti-cs/ljc20202306_Java/blob/bin/src/Sorting.java

      https://e.gitee.com/besti-cs/repos/besti-cs/ljc20202306_Java/blob/bin/src/Searching.java

2.重构你的代码

 

 

20202306 实验七 《查找与排序》

 

20202306 实验七 《查找与排序》

 

20202306 实验七 《查找与排序》

 

3. & 4.参考http://www.cnbLOGs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试;实现排序方法等(至少3个)测试实现的算法(正常,异常,边界)

 

  public class Fibonacci {        public boolean order(int[] arr,int target){        int i=0;        int a = target;        while(arr[i]!=target)        {            i++;            if(i==arr.length)                break;        }        return i==arr.length?false:true;    }        public void sort(int arr[]){        for(int i =1;i<arr.length;i++) {            for(int j=0;j<arr.length-i;j++) {                if(arr[j]>arr[j+1]) {                    int temp = arr[j];                    arr[j]=arr[j+1];                    arr[j+1]=temp;                }            }        }    }        public boolean binary(int[] arr,int min,int max,int mid,int target){        boolean found = false;        mid = (min + max) / 2;        int midd = mid;        if(arr[midd]==target)            found = true;        else if (arr[midd]!=target)        {            if(target<arr[midd])            {                max = midd-1;                midd--;                found = binary(arr,min,max,midd,target);            }            else if(target>arr[midd])            {                min = midd+1;                midd++;                found = binary(arr,min,max,midd,target);            }        }        return found;    }        public int binaryshow(int[] arr,int min,int max,int mid,int target){        int found = 0;        mid = (min + max) / 2;        int midd = mid;        if(arr[midd]==target)            found = arr[midd];        else if (arr[midd]!=target)        {            if(target<arr[midd])            {                max = midd-1;                midd--;                found = binaryshow(arr,min,max,midd,target);            }            else if(target>arr[midd])            {                min = midd+1;                midd++;                found = binaryshow(arr,min,max,midd,target);            }        }        return found;    }        public int[] hash(int[] arr){        int[] arr1 = {0,0,0,0,0,0,0,0,0,0,0,0};        for(int i=0;i<arr.length;i++)        {            if(arr1[arr[i]%11] == 0)                arr1[arr[i]%11] = arr[i];            else            {                for(int j=2;j<arr.length;j++)                    if(arr1[j-1] == 0)                    {                        arr1[j-1] = arr[i];                        break;                    }            }        }        return arr1;    }        public int hashsearch(int[] result,int target){        int k = target%11,i,re = 0;        if(result[k]==target)            re =  result[k];        else        {            for(i=k;k<result.length;k++)            {                if(result[k]==target)                {                    re = result[k];                    break;                }            }        }        return re;    }        public Linked[] linkedhash(Linked[] linked){        Linked[] arr1 = new Linked[12];        int i;        for(i=0;i<12;i++)            arr1[i] = new Linked(0);        for(i=0;i<linked.length;i++)        {            if((arr1[linked[i].getnum()%11]).getnum() == 0)                arr1[linked[i].getnum()%11] = linked[i];            else            {                arr1[linked[i].getnum()%11].setNext(linked[i]);            }        }        return arr1;    }        public int linkedsearch(Linked[] re1, int target){        int k = target%11,i,re = 0;        if(re1[k].getnum()==target)            re = re1[k].getnum();        else        {            Linked re2 = re1[k].getNext();            if(re2.getnum()==target)                re = re2.getnum();        }        return re;    }        public static boolean FibonacciSearch(int[] table, int keyWord) {        int i = 0;        while (getFibonacci(i) - 1 == table.length) {            i++;        }        int low = 0;        int height = table.length - 1;        while (low <= height) {            int mid = low + getFibonacci(i - 1);            if (table[mid] == keyWord) {                return true;            } else if (table[mid] > keyWord) {                height = mid - 1;                i--;            } else if (table[mid] < keyWord) {                low = mid + 1;                i -= 2;            }        }        return false;    }        public static int getFibonacci(int n) {        int res = 0;        if (n == 0) {            res = 0;        } else if (n == 1) {            res = 1;        } else {            int First = 0;            int second = 1;            for (int i = 2; i <= n; i++) {                res = first + second;                first = second;                second = res;            }        }        return res;    }        public static int InsertionSearch(int[] a, int value, int low, int high) {        int mid = low + (value - a[low]) / (a[high] - a[low]) * (high - low);        if (a[mid] == value)            return a[mid];        if (a[mid] > value)            return InsertionSearch(a, value, low, mid - 1);        else            return InsertionSearch(a, value, mid + 1, high);    }        public static int blocking(int[] arr,int target){        int[] ar1 = new int[arr.length];        int[] ar2 = new int[arr.length];        int[] ar3 = new int[arr.length];        int i=0,j=0,k=0,l=0;        int result = 0;        for(i=0;i<arr.length;i++)        {            if(0<=arr[i]&&arr[i]<=20)            {                ar1[j] = arr[i];                j++;            }            else if (20<arr[i]&&arr[i]<=60)            {                ar2[k] = arr[i];                k++;            }            else            {                ar3[l] = arr[i];                l++;            }        }        i=0;        if(0<=target&&target<=20)        {            for(i=0;i<ar1.length;i++)                if(ar1[i]==target)                {                    result = ar1[i];                    break;                }        }        else if (20<target&&target<=60)        {            for(i=0;i<ar2.length;i++)                if(ar2[i]==target)                {                    result = ar2[i];                    break;                }        }        else        {            for(i=0;i<ar3.length;i++)                if(ar3[i]==target)                {                    result = ar3[i];                    break;                }        }        return result;    }        public String PRint(int[] arr){        String result = "";        for(int i=0;i<arr.length;i++)            result += ""+arr[i]+" ";        return result;    }}

 

20202306 实验七 《查找与排序》

 

5.编写Android程序对实现各种查找与排序算法进行测试

20202306 实验七 《查找与排序》

 

20202306 实验七 《查找与排序》

 

## 3. 实验过程中遇到的问题和解决过程

- 问题1:代码输入的时候,会关联到其他类的内容,产生错误(主要集中在参数类型不匹配)。- 问题1解决方案:查找到存在该方法的类,修改括号内参数,并调整。- 问题2:Andriod Studio中HaXM下载失败。- 问题2解决方案:查询华为客服后,原因在于软件不适配,因此更换其他安卓虚拟机生成器。## 其他(感悟、思考等)

  排序结构操作方法多样,但结果都是相同的,因此才有探索的意义和兴趣,这需要极强的耐心和良好的逻辑思维能力。对于不懂的问题一定要存疑多问,切忌闭门造车,自以为是。

## 参考资料-  [《Java和Andriod开发学习指南(第二版)人民邮出版社》]

-  [《Java软件结构与数据结构(第三版)清华大学出版社》]

-  https://www.cnblogs.com/maybe2030/p/4715035.html

  1. 定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试。 要求不少于10个测试用例,提交测试用例设计情况(正常,异常,边界,正序,逆序),用例数据中要包含自己学号的后四位 提交运行结果图。

  2. 重构你的代码 把Sorting.java Searching.java放入 cn.edu.besti.cs2023.(姓名首字母+四位学号) 包中(例如:cn.edu.besti.cs1823.G2301) 把测试代码放test包中 重新编译,运行代码,提交编译,运行的截图(IDEA,命令行两种)

  3. 参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试 提交运行结果截图

  4. 实现排序方法等(至少3个) 测试实现的算法(正常,异常,边界) 提交运行结果截图(如果编写多个排序算法,即使其中三个排序程序有瑕疵,也可以酌情得满分)

  5. 编写Android程序对实现各种查找与排序算法进行测试 提交运行结果截 推送代码到码云(选做,额外加分)

## 2. 实验过程及结果
1.定义一个Searching和Sorting类,并在类中实现linearSearch,SelectionSort方法,最后完成测试

20202306 实验七 《查找与排序》

20202306 实验七 《查找与排序》

 码云链接:https://e.gitee.com/besti-cs/repos/besti-cs/ljc20202306_Java/blob/bin/src/Sorting.java

      https://e.gitee.com/besti-cs/repos/besti-cs/ljc20202306_Java/blob/bin/src/Searching.java

2.重构你的代码

 

 

20202306 实验七 《查找与排序》

 

20202306 实验七 《查找与排序》

 

20202306 实验七 《查找与排序》

 

3. & 4.参考http://www.cnblogs.com/maybe2030/p/4715035.html ,学习各种查找算法并在Searching中补充查找算法并测试;实现排序方法等(至少3个)测试实现的算法(正常,异常,边界)

 

  public class Fibonacci {        public boolean order(int[] arr,int target){        int i=0;        int a = target;        while(arr[i]!=target)        {            i++;            if(i==arr.length)                break;        }        return i==arr.length?false:true;    }        public void sort(int arr[]){        for(int i =1;i<arr.length;i++) {            for(int j=0;j<arr.length-i;j++) {                if(arr[j]>arr[j+1]) {                    int temp = arr[j];                    arr[j]=arr[j+1];                    arr[j+1]=temp;                }            }        }    }        public boolean binary(int[] arr,int min,int max,int mid,int target){        boolean found = false;        mid = (min + max) / 2;        int midd = mid;        if(arr[midd]==target)            found = true;        else if (arr[midd]!=target)        {            if(target<arr[midd])            {                max = midd-1;                midd--;                found = binary(arr,min,max,midd,target);            }            else if(target>arr[midd])            {                min = midd+1;                midd++;                found = binary(arr,min,max,midd,target);            }        }        return found;    }        public int binaryshow(int[] arr,int min,int max,int mid,int target){        int found = 0;        mid = (min + max) / 2;        int midd = mid;        if(arr[midd]==target)            found = arr[midd];        else if (arr[midd]!=target)        {            if(target<arr[midd])            {                max = midd-1;                midd--;                found = binaryshow(arr,min,max,midd,target);            }            else if(target>arr[midd])            {                min = midd+1;                midd++;                found = binaryshow(arr,min,max,midd,target);            }        }        return found;    }        public int[] hash(int[] arr){        int[] arr1 = {0,0,0,0,0,0,0,0,0,0,0,0};        for(int i=0;i<arr.length;i++)        {            if(arr1[arr[i]%11] == 0)                arr1[arr[i]%11] = arr[i];            else            {                for(int j=2;j<arr.length;j++)                    if(arr1[j-1] == 0)                    {                        arr1[j-1] = arr[i];                        break;                    }            }        }        return arr1;    }        public int hashsearch(int[] result,int target){        int k = target%11,i,re = 0;        if(result[k]==target)            re =  result[k];        else        {            for(i=k;k<result.length;k++)            {                if(result[k]==target)                {                    re = result[k];                    break;                }            }        }        return re;    }        public Linked[] linkedhash(Linked[] linked){        Linked[] arr1 = new Linked[12];        int i;        for(i=0;i<12;i++)            arr1[i] = new Linked(0);        for(i=0;i<linked.length;i++)        {            if((arr1[linked[i].getnum()%11]).getnum() == 0)                arr1[linked[i].getnum()%11] = linked[i];            else            {                arr1[linked[i].getnum()%11].setNext(linked[i]);            }        }        return arr1;    }        public int linkedsearch(Linked[] re1, int target){        int k = target%11,i,re = 0;        if(re1[k].getnum()==target)            re = re1[k].getnum();        else        {            Linked re2 = re1[k].getNext();            if(re2.getnum()==target)                re = re2.getnum();        }        return re;    }        public static boolean FibonacciSearch(int[] table, int keyWord) {        int i = 0;        while (getFibonacci(i) - 1 == table.length) {            i++;        }        int low = 0;        int height = table.length - 1;        while (low <= height) {            int mid = low + getFibonacci(i - 1);            if (table[mid] == keyWord) {                return true;            } else if (table[mid] > keyWord) {                height = mid - 1;                i--;            } else if (table[mid] < keyWord) {                low = mid + 1;                i -= 2;            }        }        return false;    }        public static int getFibonacci(int n) {        int res = 0;        if (n == 0) {            res = 0;        } else if (n == 1) {            res = 1;        } else {            int first = 0;            int second = 1;            for (int i = 2; i <= n; i++) {                res = first + second;                first = second;                second = res;            }        }        return res;    }        public static int InsertionSearch(int[] a, int value, int low, int high) {        int mid = low + (value - a[low]) / (a[high] - a[low]) * (high - low);        if (a[mid] == value)            return a[mid];        if (a[mid] > value)            return InsertionSearch(a, value, low, mid - 1);        else            return InsertionSearch(a, value, mid + 1, high);    }        public static int blocking(int[] arr,int target){        int[] ar1 = new int[arr.length];        int[] ar2 = new int[arr.length];        int[] ar3 = new int[arr.length];        int i=0,j=0,k=0,l=0;        int result = 0;        for(i=0;i<arr.length;i++)        {            if(0<=arr[i]&&arr[i]<=20)            {                ar1[j] = arr[i];                j++;            }            else if (20<arr[i]&&arr[i]<=60)            {                ar2[k] = arr[i];                k++;            }            else            {                ar3[l] = arr[i];                l++;            }        }        i=0;        if(0<=target&&target<=20)        {            for(i=0;i<ar1.length;i++)                if(ar1[i]==target)                {                    result = ar1[i];                    break;                }        }        else if (20<target&&target<=60)        {            for(i=0;i<ar2.length;i++)                if(ar2[i]==target)                {                    result = ar2[i];                    break;                }        }        else        {            for(i=0;i<ar3.length;i++)                if(ar3[i]==target)                {                    result = ar3[i];                    break;                }        }        return result;    }        public String print(int[] arr){        String result = "";        for(int i=0;i<arr.length;i++)            result += ""+arr[i]+" ";        return result;    }}

 

20202306 实验七 《查找与排序》

 

5.编写Android程序对实现各种查找与排序算法进行测试

20202306 实验七 《查找与排序》

 

20202306 实验七 《查找与排序》

 

## 3. 实验过程中遇到的问题和解决过程

- 问题1:代码输入的时候,会关联到其他类的内容,产生错误(主要集中在参数类型不匹配)。- 问题1解决方案:查找到存在该方法的类,修改括号内参数,并调整。- 问题2:Andriod Studio中Haxm下载失败。- 问题2解决方案:查询华为客服后,原因在于软件不适配,因此更换其他安卓虚拟机生成器。## 其他(感悟、思考等)

  排序结构操作方法多样,但结果都是相同的,因此才有探索的意义和兴趣,这需要极强的耐心和良好的逻辑思维能力。对于不懂的问题一定要存疑多问,切忌闭门造车,自以为是。

## 参考资料-  [《Java和Andriod开发学习指南(第二版)人民邮电出版社》]

-  [《Java软件结构与数据结构(第三版)清华大学出版社》]

-  https://www.cnblogs.com/maybe2030/p/4715035.html

脚本宝典总结

以上是脚本宝典为你收集整理的20202306 实验七 《查找与排序》全部内容,希望文章能够帮你解决20202306 实验七 《查找与排序》所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。