算法:查找(搜索)
二分法:(前提:有序)
代码:
public class arraytest5 {
public static void main(String[] args) {
String[] arr = new String[] { "JJ", "DD", "MM", "BB", "GG", "AA" };
// 3.查找(或搜索)
// 3.1线性查找
String dest = "BB";
// 定义一个标识
boolean isFlag = true;
for (int i = 0; i < arr.length; i++) {
if (dest.equals(arr[i])) {
System.out.println("找到了指定的元素,位置为:" + i);
isFlag = false;
break;
}
}
if (isFlag) {
System.out.println("很遗憾,没找到!");
}
//
// 3.2二分法查找(快)
// 前提:索要查找的数组必须有序。
int[] arr2 = new int[] { -98, -34, 2, 34, 54, 66, 79, 105, 210, 333 };
//
int dest1 = -34;
dest1 = 36;
int head = 0;// 初始的受索引
int end = arr2.length - 1;// 初始的末索引
//
boolean isFlag1 =true;
while (head <= end) {
int middle = (head + end) / 2;
if (dest1 == arr2[middle]) {
System.out.println("找到了指定的元素,位置为:" + middle);
isFlag1 = false;
break;
} else if (arr2[middle] > dest1) {
end = middle - 1;
} else {// arr2[middle] < dest1
head = middle + 1;
}
}
if(isFlag1) {
System.out.println("很遗憾,没有找到!");
}
}
}
输出:
找到了指定的元素,位置为:3
很遗憾,没有找到!