查找算法就是查询数组中是否存在某个元素,如果存在则返回该元素所在的索引,如果不存在则返回-1
遍历查找
说明
遍历查找,就是按顺序遍历数组,依次比较数组元素是否和查找的元素相同,如果相同,则返回对应元素的索引,否则返回-1.
代码实现
/**
* 从左向右查找target元素,并返回找到的最小的索引值。当找不到时返回-1
* @author Ethan
* @description
* @param array
* @param target
* @return
*/
public static int sequenceFind(int[] array, int target){
for(int i = 0; i < array.length; i++){
if(array[i] == target){
return i;
}
}
return -1;
}
二分查找
说明
二分查找是针对有序数组进行查找的。
首先判断数组中间的元素是否是目标元素,如果小于目标元素,说明目标元素在中间元素的右侧,否则说明在中间元素的左侧。
找到元素返回true,未找到返回false
代码实现
/**
* 二分查找元素,前提条件是数组是有序数组
* @author Ethan
* @description
* @param array
* @param target
* @return 找到返回true,未找到返回false
*/
public static boolean binarySearch(int[] array, int target){
// 起始索引
int left = 0;
// 终止索引
int right = array.length - 1;
while(left <= right){
// 取中间索引比较
int middle = (left + right) / 2;
if(array[middle] == target){
return true;
// 中间值小于目标值时,应向右查找
}else if(array[middle] < target){
left = middle + 1;
// 中间值大于目标值时,应向左查找
}else{
right = middle - 1;
}
}
return false;
}