码迷,mamicode.com
首页 > 编程语言 > 详细

Java顺序查找、二分查找

时间:2020-07-18 13:34:27      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:mic   顺序   arrays   图片   数据   ++   load   非递归   最简   

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顺序查找、二分查找

标签:mic   顺序   arrays   图片   数据   ++   load   非递归   最简   

原文地址:https://www.cnblogs.com/lyhLive/p/13334699.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!