Java顺序查找二分查找

Posted 李元浩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java顺序查找二分查找相关的知识,希望对你有一定的参考价值。

Java顺序查找、二分查找

  查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,只需要一个个对比即可,但其实效率很低。

顺序查找

动图演示

顺序查找

详细代码

      // 顺序查找
      public static boolean search(int[] arrray, int key) {
		for (int i = 0; i < arrray.length; i++) {
			if (arrray[i] == key) {
				return true;
			}
		}
		return false;
	}

二分查找

  二分法查找适用于大的数据,但前提条件是数据必须是有序的,他的原理是先和中间的比较,如果等于就直接返回,如果小于就在前半部分继续使用二分法进行查找,如果大于则在后半部分继续使用二分法进行查找。

动图演示

二分查找

详细代码

      // 非递归
	public static boolean binarySearch1(int[] array,int key) {
		int low = 0;
		int high = array.length-1;
		while(low <= high) {
			int middle = low + (high-low)/2;
			if(key==array[middle]) {
				return true;
			}
			if(key>array[middle]) {
				low = middle + 1;
			}
			if(key<array[middle]) {
				high = middle - 1;
			}
		}
		return false;
	}
	// 递归
	public static boolean binarySearch2(int[] array,int key) {
		int low = 0;
		int high = array.length - 1;
		Arrays.sort(array); // 排序
		return Search(array,key,low,high);
	}
	public static boolean Search(int[] array,int key,int low,int high) {
		int mid = low + (high - low)/2;
		if(low>high) {
			return false;
		}
		if(key == array[mid]) {
			return true;
		}
		if(key>array[mid]) {
			return Search(array,key,mid+1,high);
		}
		return Search(array,key,low,mid-1);
	}

以上是关于Java顺序查找二分查找的主要内容,如果未能解决你的问题,请参考以下文章

顺序查找和二分查找代码

二分查找算法(JAVA)

leetcode查找算法(顺序查找,二分法,斐波那契查找,插值查找,分块查找)

学习数据结构笔记 ---查找算法(线性查找,二分查找,插值查找,斐波那契查找)

经典算法二分查找循环实现Java版

二分搜索 O(log n) 算法在顺序列表中查找重复项?