标签:logs pre 二叉树 越界 structure 运行 数据 fir 重构
课程:《程序设计与数据结构》
班级: 1823
姓名:张端云
学号:20182303
实验教师:王志强
实验日期:2019年10月30日
必修/选修: 必修
要求在类中实现linearSearch
方法,并完成测试。
public static Comparable LinearSearch(Comparable[] data,Comparable target)
{
Comparable result=null;
int index=0;
while(result==null&&index<data.length)
{
if(data[index].compareTo(target)==0)
result=data[index];
index++;
}
return result;
}
测试:
要求在类中实现SelectionSort
方法,并完成测试
public static void selectionSort(Comparable[] data) {
int min;
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);
}
}
测试:
正序、逆序、乱序测试
空指针异常测试
越界异常测试
把Sorting.java
、Searching.java
放入 cn.edu.besti.cs1823.Zdy2303
中,并完成测试。
学习各种查找算法并在Searching
中补充查找算法并测试。
补充的查找算法有:二分查找、插入查找、斐波那契查找。
public static Comparable binarySearch(Comparable[] data,Comparable target)
{
Comparable result=null;
int first=0,last=data.length,mid;
while(result==null&&first<=last)
{
mid=(first+last)/2;
if(data[mid].compareTo(target)==0)
result=data[mid];
else
if(data[mid].compareTo(target)>0)
last=mid-1;
else
first=mid+1;
}
return result;
}
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;
}
public static int Fibonacci(int n) {
if(n == 0) {
return 0;
}
if(n == 1) {
return 1;
}
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
public static int FibonacciSearch(int[] data,int n,int key) {
int low = 1;
int high = n;
int mid;
// 寻找k值,k值要求k值能使得F[k]-1恰好大于或等于n
int k = 0;
while (n > Fibonacci(k) - 1) {
k++;
}
//因为无法直接对原数组增加长度,所以定义一个新的数组
//采用System.arraycopy()进行数组间的赋值
int[] temp = new int[Fibonacci(k)];
System.arraycopy(data, 0, temp, 0, data.length);
//对数组中新增的位置进行赋值
for (int i = n + 1; i <= Fibonacci(k) - 1; i++) {
temp[i] = temp[n];
}
while (low <= high) {
mid = low + Fibonacci(k - 1) - 1;
// 在mid的左边进行查找
if (temp[mid] > key) {
high = mid - 1;
k = k - 1;
}
// 在mid的右边进行查找
else if (temp[mid] < key) {
low = mid + 1;
k = k - 2;
} else {
if (mid <= n) {
return mid;
}
//当mid位于新增的数组中时,返回n
else {
return n;
}
}
}
return 0;
}
测试:补充实现排序方法:希尔排序,堆排序,二叉树排序等(至少3个),并完成测试(正常,异常,边界)。
编写Android程序对实现各种查找与排序算法进行测试。
问题1:在完成命令行测试时,发现命令行中不能使用junit测试。
问题1解决方案:Ubuntu单元测试JUnit的使用
由以上链接,理论上命令行实现junit是可行的,然而我并没有尝试成功...只能编写驱动程序进行测试。
本次实验发现自己对于linux命令行的操作已经有些生疏,知识果然不会一直乖乖的待在自己脑子里,三天不复习,知识就会上房揭瓦。
20182303 2019-2020-1 《数据结构与面向对象程序设计》实验7报告
标签:logs pre 二叉树 越界 structure 运行 数据 fir 重构
原文地址:https://www.cnblogs.com/zdyyy/p/11876030.html