线性查找法
最简单的查找算法 一个个进行比较 直到找到第一个相同的值或对比完所有的值后停止
import java.util.Scanner;
public class code
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int[] arr = {0,1,2,3,4,5,6,7,8,12};
int key = -1;// 数组下标
int search = input.nextInt();// 输入一个值 进行查找
for (int i = 0; i <arr.length;i++)
{
if(arr[i] == search) // 如果值相等 直接跳出循环 返回下标
{
key = i;
break;
}
}
if(key == -1)
{
System.out.println("没有找到");
}
else
{
System.out.println("下标为:" + key);
}
}
}
二分查找法
每次比较会减少筛掉数组一半的元素 效率高 但是只适用于已经进行过排序的数组
import java.util.Scanner;
public class code
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
int[] arr = {0,1,2,3,4,5,6,7,8,12};
int start = 0;
int end = arr.length - 1;
int middle;// 数组中间值
int key = -1;// 数组下标
int search = input.nextInt();// 输入一个值 进行查找
while(start <= end)
{
middle = (start+end) / 2;// 每次循环获得中间值
if(arr[middle] == search)// 如果结果相等 直接跳出循环返回下标
{
key = middle;
break;
}
if(arr[middle] < search)// 如果查找值大于数组值 对起始值进行赋值
{
start = middle + 1;
}
if(arr[middle] > search)// 如果查找值小于数组值 对结束值进行赋值
{
end = middle - 1;
}
}
if(key == -1)
{
System.out.println("没有找到");
}
else
{
System.out.println("下标为:" + key);
}
}
}
最后一次更新于2019-04-24 16:32
0 条评论