数组中常见的查找法就是 基本查找法 ,也就是遍历下来挨个比对进行查找!
public class Test {
public static void main(String[] args) {
int[] arr = {10, 3, 1, 6, 7, 65, 30, 80, 90};
//查找该元素在数组中第一次出现的索引
int index = getIndex(arr, 90);
System.out.println(index);
}
//基本查找
private static int getIndex(int[] arr, int ele) {
for (int i = 0; i < arr.length; i++) {
if (ele == arr[i]) {
return i;
}
}
return -1; //-1 表示没有 找到
}
}
除此之外就是 二分查找法
二分查找法的前提就是这个数组里的元素是有序的!否则用不了二分查找法的哈!
二分查找的基本思想:每次拿着需要查找的元素与数组中间索引所对应的元素进行比较!如果想等即返回,如果需要查找的元素比数组中间索引所对应的元素小,则继续与左边区域的中间元素比较.如果需要查找的元素比数组中间索引所对应的元素大,则继续与右边区域的中间元素比较.
是不是又点晕乎乎的?没关系!咱们看一下图,便一目了然了!
现在心里明朗了许多吧!来咱们直接进入代码实现环节!
public class MyTest2 {
public static void main(String[] args) {
int[] arr = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
//二分查找:数组元素,必须有序
int index = myBinarySearch(arr, 70);
System.out.println(index);
}
private static int myBinarySearch(int[] arr, int ele) {
int minIndex = 0;
int maxIndex = arr.length - 1;
int centerIndex = (minIndex + maxIndex) / 2;
while (minIndex <= maxIndex) {
if (ele == arr[centerIndex]) { //中间元素与需要查找的元素相等
return centerIndex;
} else if (ele < arr[centerIndex]) { //需要查找的元素小于中间元素
maxIndex = centerIndex - 1;
} else if (ele > arr[centerIndex]) { //需要查找的元素大于中间元素
minIndex = centerIndex + 1;
}
//重新计算中间索引
centerIndex = (minIndex + maxIndex) / 2;
}
return -1;
}
}
(小编也在努力学习更多哟!以后会多多分享哒!)
希望对友友们有所帮助!!!!