数组中有很多算法应用,今天来看一看简单的查找算法。
线性查找
线性查找就是地毯式查找,算法简单,但是时间复杂度也高
public class Test {
public static void main(String[] args) {
String[] names = new String [] {"雪之下雪乃","绫小路清隆","Saber","樱岛麻衣"};
String name = "Saber";
boolean isFlag = true;
for(int i = 0;i < names.length;i++) {
if(name.equals(names[i])) { // equals 为Java指定方法,用来判断值是否相等
System.out.println("找到了指定元素,位置为:" + i);
isFlag = false;
break;
}
}
if(isFlag == true) {
System.out.println("很遗憾没找到");
}
}
}
>>> 找到了指定元素,位置为:2
二分法查找
前提:所要查找的数组必须有序
public class Test {
public static void main(String[] args) {
int[] arr = new int[] {-5,-1,1,4,5,6,7,8};
int dest = 1; // 查找 1 的索引
boolean isFlag = true;
int head = 0; // 初始的首索引
int end = arr.length - 1; // 初始的末索引
while(head <= end) {
int middle = (head + end)/2;
if (dest == arr[middle]) {
System.out.println("找到了指定元素,位置为:" + middle);
isFlag = false;
break;
}else if(arr[middle] > dest) {
end = middle - 1;
}else { // arr[middle] < dest
head = middle + 1;
}
}
if (isFlag) {
System.out.println("很遗憾没找到");
}
}
}
>>> 找到了指定元素,位置为:2