需求: 定义一个函数接收一个数组与一个要查找的元素,然后返回元素在数组中的索引值。如果不存在 返回表示。
//遍历查找法:遍历数组中的每个元素与目标元素比较一次。
代码实现:
class Demo_04 { public static void main(String[] args) { int[] arr = {12,15,18,19,34}; int index = searchEle(arr,19); System.out.println("索引值:"+index); } public static int searchEle(int[] arr,int target) { for(int i = 0;i < arr.length;i++) { if(arr[i] == target) { return i; } } return -1; }
}
//折半查找法(仅适用于有序数组)
class Demo4 { public static void main(String[] args) { int[] arr = {12,15,18,19,34}; int index = halfSearch(arr,13); System.out.println("索引值:"+ index); }
//折半查找法 public static int halfSearch(int[] arr, int target){ //定义三个变量记录查找范围的最大、最小、中间索引值 int max = arr.length-1; int min = 0; int mid = (max+min)/2; while(true){ if(target>arr[mid]){ min = mid+1; }else if(target<arr[mid]){ max = mid-1; }else{ //找到的情况 return mid; }
//由于上面会改变最大、最小索引值,所以应该要重新计算中间值。 mid = (max+min)/2; //找不到的情况 if(min>max){ return -1; } } }
}
