二分查找和线性查找可运用于数组
线性查找 时间复杂度 O(n)
1、遍历数组
2、拿目标和数组中的元素进行匹对
3、找到则返回数组中该元素的下标
4、未查询到则返回-1
//自定义数组
public class MyArray {
int[] elements;
// 线性查找
public int search(int target) {
for (int i = 0; i < elements.length; i++) {
if (target == elements[i]) {
return i;
}
}
// 如果没找到
return -1;
}}
二分查找 时间复杂度 O(log2n)
二分查找是有必要的前提,即数组中的元素一定要排好顺序
1、找到该数组的中点

2、目标元素与中点值进行比对
相等则返回该中点元素下标
如果目标元素大于中点
则把低位元素的下标设置成中点向右移动一位
如果目标元素小于中点
则把高位元素的下标设置成中点向左移动一位
根据低位元素下标和高位元素下标重新计算出中点
public class MyArray {
int[] elements;
// 二分查找
public int binarySearch(int target) {
int low = 0;
int high = elements.length - 1;
int mid = (low + high) / 2;
while (true) {
if (low > high) {
break;
}
if (target == elements[mid]) {
// 相等 返回位置
return mid;
} else {
// 如果target > mid
if (target > elements[mid]) {
low = mid + 1;
} else {
// target <elements[mid]
high = mid - 1;
}
}
mid = (low + high) / 2;
}
return -1;
}
}
来源:https://www.cnblogs.com/laolei11/p/10642261.html