用 java语言以测试驱动开发实现折半查找算法
时间: 2023-10-13 14:05:57 浏览: 75
Java数据结构实现折半查找的算法过程解析
5星 · 资源好评率100%
首先,我们需要定义一个折半查找的方法,其输入参数为一个有序数组和要查找的元素,输出为该元素在数组中的下标(如果存在)或者-1(如果不存在)。
```
public class BinarySearch {
public static int search(int[] arr, int target) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (arr[mid] == target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
}
```
然后,我们可以使用 JUnit 来编写测试用例。我们需要测试以下几种情况:
1. 数组中存在要查找的元素。
2. 数组中不存在要查找的元素。
3. 数组为空。
4. 数组中只有一个元素,且该元素为要查找的元素。
5. 数组中只有一个元素,且该元素不是要查找的元素。
```
import org.junit.Test;
import static org.junit.Assert.*;
public class BinarySearchTest {
@Test
public void testSearch() {
int[] arr1 = {1, 2, 3, 4, 5};
assertEquals(2, BinarySearch.search(arr1, 3));
int[] arr2 = {1, 2, 3, 4, 5};
assertEquals(-1, BinarySearch.search(arr2, 6));
int[] arr3 = {};
assertEquals(-1, BinarySearch.search(arr3, 1));
int[] arr4 = {1};
assertEquals(0, BinarySearch.search(arr4, 1));
int[] arr5 = {1};
assertEquals(-1, BinarySearch.search(arr5, 2));
}
}
```
以上就是一个简单的测试驱动开发过程。我们首先定义了一个折半查找的方法,然后编写了几个测试用例来测试该方法的正确性。接着,我们逐步完善该方法,直到所有测试用例都能通过。
阅读全文