public class 一般查找 {
public static void main(String[] args) {
int s[] = { 5, 65, 95, 265, 16, 51, 65, 65 };
int key = 16;
if (Search(s, key)) {
System.out.println("存在该元素");
} else {
System.out.println("不存在该元素");
}
}
private static boolean Search(int[] s, int key) {
for (int i = 0; i < s.length; i++) {
if (key == s[i]) {
return true;
}
}
return false;
}
}
基本思路就是:遍历数组中的所有元素,一一对比。复杂度高,但不需要排序。
public class 二叉查找 {
public static void main(String[] args) {
int s[] = { 5,95,96,989,95466 };
int key = 95;
System.out.println(Search(s, key));
}
private static int Search(int[] s, int key) {
int left = 0;
int right = s.length - 1;
int mid;
while (left <= right) {
mid = (right + left) / 2;
if (key == s[mid]) {
return mid;
} else if (key < s[mid]) {
right = mid - 1;
} else if (key > s[mid]) {
left = mid + 1;
}
}
return -1;
}
}
基本思路类似二分法求解,每次取中间。但是需要事先排序,复杂度低。