1、首先我们先说一下线性查找
线性查找就是从数组的下标0开始找到数组的最后一个,下面我们用代码简单的实现一下
package TestArrayDemo;
/**
* Created by xiaobai on 2019/1/9.
*/
public class XianXingChaZhao {
public static void main(String[] args) {
//初始化数组
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,0};
//要查找的数字
int element = 0;
//标识
int index = -1;
//获取开始时间
long startTime = System.nanoTime();
//开始查找
for (int i = 0; i <arr.length ; i++) {
if (arr[i] == element){
index = i;
break;
}
}
System.out.println(index);
long endTime = System.nanoTime();
//输出程序运行时间
System.out.println("程序运行时间:" + (endTime - startTime) + "ns");
}
}
下来我们看一下控制台打印的时间
9
程序运行时间:238934ms
Process finished with exit code 0
2、下来我们看看二分法查找
当然了 二分法查找对于数组的要求是数组是要有序的,他是将一个数组从中间不停的分
package TestArrayDemo;
import java.util.List;
/**
* Created by xiaobai on 2019/1/9.
*/
public class ErFenChaZhao {
public static void main(String[] args) {
//初始化数组
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,0};
//所要查找的数
int element = 9;
//定义一个变量来存放开始位置
int start = 0;
//定义一个变量来存放结束位置
int end = arr.length -1;
//定义一个变量来存放中间位置
int mid = (start + end) / 2;
//记录目标位置
int index = -1;
//获取开始时间
long startTime = System.nanoTime();
//循环查找
while (true){
//判断中间位置的元素是不是要查找的元素
if (arr[mid] == element){
index = mid;
break;
//中间这个元素不是要查找的元素
}else{
//判断中间的元素是不是要比查找的元素大
if (element < arr[mid]){
//把结束位置挪到中间位置之前一个
end = mid-1;
}else{
//判断中间的元素是不是要比查找的元素小
start = mid+1;
}
//重新取出中间位置
mid = (start + end) / 2;
}
}
System.out.println(index);
long endTime = System.nanoTime();
//输出程序运行时间
System.out.println("程序运行时间:" + (endTime - startTime) + "ns");
}
}
看一下控制台
8
程序运行时间:418134ns
Process finished with exit code 0