课程:《程序设计与数据结构(下)》
班级:1723
姓名: 王志伟
学号:20172309
实验教师:王志强老师
实验日期:2018年11月2日
必修/选修: 必修html
public static <T> boolean linearSearch(T[] data, int min, int max, T target) { int index = min; boolean found = false; while (!found && index <= max) { found = data[index].equals(target); index++; } return found; }//顺序/线性查找这个算法的理念是一个一个查找,直到找到为止。不过我的以为这个算法的缺点是当有两个目标值时,将不会查到第二个。好比:在数组{1,2,3,4, 5, 5,6 }中查找数字5时,将只能查找到索引为4的数字5,而不会查找到索引值为5的那个。
public static <T extends Comparable<T>>//选择排序 String selectionSort(T[] data) { int min; T temp; for (int index = 0; index < data.length - 1; index++) { min = index; for (int scan = index + 1; scan < data.length; scan++) if (data[scan].compareTo(data[min]) < 0) min = scan; swap(data, min, index); } return Arrays.toString(data); }选择排序的理念就是把一排数列中的东西中的最大(最小)放到最前面并与之交换位置,以后又从剩下的算法中选择出最大(最小)的与第二个项目交换位置·····直至所有完成。这里值得说的一个重点是
Arrays.toString(data);
这个方法,这个方法的用处是把一个数组自动ToString(),也就是不用本身写toString方法。
这里要求测试用例须要正常、异常、边界、正序、逆序我感受有点错误,好比线性查找哪来的正序、逆序测试,选择排序哪来的边界测试。不是很懂,感受有问题~~~java
把Sorting.java,Searching.java放入cn.edu.besti.cs1723.(姓名首字母+四位学号)包中(例如:cn.edu.besti.cs1723.G2301)。并把测试代码放test包中。
android
一开始并不知道
cn.edu.besti.cs1723.
什么意思,其实到文件中去看就会发现他这并非一个文件夹,而是cn的文件夹下有edu,edu的文件夹下有besti....git
开心的是好像IDEA也有命令行模式,不过这是在我作完实验以后才发现的o(╥﹏╥)o
若是没有显示的话,能够手动开启:
算法
方法代码:
```
public static <T extends Comparable
boolean binarySearch(T[] data, int min, int max, T target)
{
boolean found = false;
int midpoint = (min + max) / 2; // determine the midpoint
if (data[midpoint].compareTo(target) == 0)
found = true;数据库
else if (data[midpoint].compareTo(target) > 0)
{
if (min <= midpoint - 1)
found = binarySearch(data, min, midpoint - 1, target);
}数组
else if (midpoint + 1 <= max)
found = binarySearch(data, midpoint + 1, max, target);数据结构
return found;app
}//二分查找
```
if (data[midpoint].compareTo(target) == 0)
found = true;
else if (data[midpoint].compareTo(target) > 0)
{
if (min <= midpoint - 1)
found = binarySearch(data, min, midpoint - 1, target);
}
else if (midpoint + 1 <= max)
found = binarySearch(data, midpoint + 1, max, target);
return found;
}//二分查找
```
mid=low+(key-a[low])/(a[high]-a[low])*(high-low)
为何是这样?在下面的的问题中讲。public static boolean interpolationSearch(int[] data,int low,int high,int target){ while (low<high) { int mid=low+(high-low)*((target-data[low])/(data[high]-data[low])); if (target<data[mid]) { interpolationSearch(data, low, mid-1, target); } else if (target>data[mid]) { interpolationSearch(data, mid+1, high, target); } else { return data[mid]==target; } } return false; }//插值查找,不能使用泛型
public static boolean FibonacciSearch(int[] data,int target){ int low = 0; int high = data.length - 1; int mid = 0; // 斐波那契分割数值下标 int k = 0; // 序列元素个数 int count = 0; // 获取斐波那契数列 int[] f = new int[20]; int m = 0; f[0] = 1; f[1] = 1; for (m = 2; m < 20; m++) { f[m] = f[m - 1] + f[m - 2]; } // 获取斐波那契分割数值下标 while (data.length > f[k] - 1) { k++; } // 建立临时数组 int[] temp = new int[f[k] - 1]; for (int j = 0; j < data.length;j++){ temp[j] = data[j]; }
详情看上面连接
//详情看上面连接
//详情看上面连接
onclick
属性。像这样:<Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="建立数据库" **android:onClick="creatDb"**<--这儿 android:background="#ffbbff" />
public void onclick(View view){ switch (条件){ case R.id.button1: ···逻辑代码··· break; case R.id.button2: ···逻辑代码··· break; ····· }
@Test public void shellSort() { }
assertEquals(参数一,参数二)
方法,例:@Test public void shellSort() { assertEquals(预约结果,测试的方法); //例:assertEquals("[2301, 2302, 2303, 2305, 2307, 2309]",Sorting.shellSort(list1,3));//正常 }
mid=low+(key-a[low])/(a[high]-a[low])*(high-low)
是怎么来的?补博客可真是麻烦,拿起了很久都没动过的IDEA(由于最近在作实战项目)。