线性查找
public class linear_search {
public int search(int arr[], int val){
for (int i = 0; i < arr.length; i++) {
if(arr[i] == val) {
return i;
}
}
return -1;
}
}
二分查找
- 注意: 使用二分查找必须先对数组进行排序
public class binary_search {
public int search(int arr[], int val) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = (right + left) / 2; //获取中间值
if (arr[mid] == val) {
return mid;
} else if (arr[mid] > val) { //查找的值在左边
right = mid - 1;
} else { //查找的值在右边
left = mid + 1;
}
}
return -1;
}
}
测试代码:
public class search {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
binary_search bs = new binary_search();
int val = 8;
if (bs.search(arr, val) == -1) {
System.out.println("Not found!");
} else {
System.out.println("The index of " + val + " is " + bs.search(arr, val));
}
val = 3;
linear_search ls = new linear_search();
if (ls.search(arr, val) == -1) {
System.out.println("Not found!");
} else {
System.out.println("The index of " + val + " is " + ls.search(arr, val));
}
}
}
运行结果如下: