线性查找
简单线性查找,迭代数组
可查找有序数组和无序数组
有序数组最坏情况需要完全查找所有元素
实现
public static int seqSearch(int[] arr, int key) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == key) {
return i;
}
}
return -1;
}
二分查找
针对于有序数组优化查找方案
获取数组中间元素判断key所在区域,重复查找方案直到查找到key
中间元素取值时由于+加法可能会溢出,使用无符号右移 >>> 1 可达到除以2且不出现溢出情况
实现
public static int binarySearch(int[] arr, int key) {
int low = 0, high = arr.length - 1;
while (low <= high) {
int mid = (low + high) >>> 1;
if (arr[mid] == key) {
return mid;
} else if