普通查找与二分查找
普通查找
原理:遍历数组,获取每一个元素,然后判断当前遍历的元素是否和要查找的元素相同,如果相同就返回该元素的索引。如果没有找到,就返回一个负数作为标识(一般是-1)
二分查找
原理: 每一次都去获取数组的中间索引所对应的元素,然后和要查找的元素进 行比对,如果相同就返回索引;如果不相同,就比较中间元素和要查找的元素的值;如果中间元素的值大于要查找的元素,说明要查找的元素在左侧,那么就从左侧按照上述思想继续查询(忽略右侧数据);如果中间元素的值小于要查找的元素,说明要查找的元素在右侧,那么就从右侧按照上述思想继续查询(忽略左侧数据);
- 注意: 二分查找对数组是有要求的,数组必须已经排好序
代码实现
private static int binarySearch(int[] arr,int findNum) {
int start = 0;
int end = arr.length-1;
while (start <= end) {
int mid = (end + start)/2;
if (arr[mid] == findNum) {
return mid;
} else if (arr[mid] > findNum) {
end = mid-1;
} else {
start = mid+1;
}
}
return -1;
}