JAVA:一般查找和二分查找


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;
	}
}

基本思路类似二分法求解,每次取中间。但是需要事先排序,复杂度低。

猜你喜欢

转载自blog.csdn.net/qq_42192693/article/details/81116823