/**
* 线性查找
*/
public class demo {
public static void main(String[] args) {
//定义一个数组
int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
//要查找的数
int temp = 4;
//定义一个索引
int index = -1;
for (int i = 0; i < array.length; i++) {
if (array[i] == temp){
index = i;
//跳出循环
break;
}
}
System.out.println("这个数对应的下标为:"+ index);
}
}
由于线性查找要一个个遍历数组中的元素,直到找出那个数,所以效率比较低。
二分查找:前提是这组数据是有序的。记录这组数的中间元素,判断目标元素是在它的左边还是右边或者正好相等,再依次递归查找
/**
* 二分查找
*/
public class demo {
public static void main(String[] args) {
//定义一个数组
int[] array = new int[]{1, 2, 3, 4, 5, 6, 7, 8};
//要查找的数
int temp = 4;
//定义一个索引
int index = -1;
//定义初始位置
int start = 0;
//定义末尾位置
int end = array.length;
//中间位置
int mid = (start + end) / 2;
while (true) {
//判断中间的这个元素是不是要查找的元素
if (array[mid] == temp) {
index = mid;
break;
//中间这个元素不是要查的元素
} else {
//判断中间这个元素是不是比目标元素大
if (array[mid] > temp) {
//把结束位置调整到中间位置前一个位置
end = mid - 1;
//中间这个元素比目标元素小
} else {
//把开始位置调整到中间位置的后一个位置
start = mid + 1;
}
//取出新的中间位置
mid = (start + end) / 2;
}
}
System.out.println("这个数对应的下标为:" + index);
}
}