Java查找算法-17-二分查找

标签: Java二分查找
26人阅读 评论(0) 收藏 举报
分类:

       前面两篇介绍了两个常见的基于数组的排序算法,这篇来学习一个数组查找元素的算法,叫二分查找。这个二分查找效率还是比较高的,比较一次就可以判断一般元素。二分查找的前提是有序数组,所以采用二分查找之前,必须要对数组元素进行排序,你可以用冒泡也可以用选择排序。


1.二分查找原理


2.查找一个小于中间值

3.查找一个大于中间值的


4.查找一个不存在的

5.具体二分查找代码实现

package sort;

public class Test_ErFen {

	public static void main(String[] args) {
		int[] arr = {11,22,33,44,55,66,77};
		System.out.println(getIndex(arr,44));
		System.out.println(getIndex(arr,66));
		System.out.println(getIndex(arr,68));
	}
	
	public static int getIndex(int[] arr, int target) {
		//1.定义最小索引,最大索引,中间索引的标记
		int max = arr.length - 1;
		int min = 0;
		int mid = (min+max)/2;
		
		// 当中间值不等于要找的值,就开始循环
		while (arr[mid] != target) {
			
			if(arr[mid] < target) {
				// 说明目标元素在右半部分,最小的索引改变
				min = mid + 1;
			}else if (arr[mid] > target) {
				// 说明目标元素在左侧半部分,最大的索引改变
				max = mid - 1;
			}
			
			// 由于上面min或者max发生了改变,所以mid需要重新获取新的值
			mid = (min + max)/2;
			
			// 如果最小索引大于最大索引就没有查找的可能性,返回-1
			if(min > max) {
				return -1;
			}
		}
	
		return mid;
	}
}

打印出: 3, 5, -1





查看评论

java实现查找算法——折半查找(二分查找)

折半查找算法折半查找(Binary Search)又称为二分查找,其要求数据序列呈线性结构,也就是经过排序的。对于没有经过排序的,可以查阅我之前的排序算法文章进行预排序,然后进行折半查找操作。譬如数组...
  • xu__cg
  • xu__cg
  • 2016-09-26 18:53:10
  • 1192

java 详细实现二分查找算法

java详细实现二分查找的算法 一:二分查找简介: 1:名称简介-----------二分查找又叫折半查找,针对的是是有序表(升序获降序的数组)。 2:原理介绍: 二分查找是以处在有序表区间中...
  • HcJsJqJSSM
  • HcJsJqJSSM
  • 2016-12-03 17:23:05
  • 782

Java对查找算法的实现—顺序查找(一)

在数据结构中,常用的查找方法一共有五种,分别是:       1.顺序查找        2.二分查找        3.分块查找        4.二叉排序树查找        5.哈希查...
  • qwer790111
  • qwer790111
  • 2012-10-10 10:47:43
  • 641

查找算法:二分查找、顺序查找

  • 2012年07月19日 09:47
  • 1.07MB
  • 下载

二分查找算法流程图流程图举例

  • 2009年05月26日 20:24
  • 55KB
  • 下载

基于二分查找法的数值区间查找

本文给出基于二分查找法的区间查找的定义,并辅以C++源码,并介绍一下二分查找法的区间查找的应用。...
  • zjq2008wd
  • zjq2008wd
  • 2014-08-18 14:54:44
  • 1941

算法题:二分查找的溢出考虑

#include using namespace std;int find_val(int a[],int n,int val) { int low = 0; int high = ...
  • liuhuiyan_2014
  • liuhuiyan_2014
  • 2015-08-28 01:29:08
  • 1412

查找算法之二分查找算法

查找算法之二分查找算法1. 概述二分查找算法也称折半查找算法,是在有序数组中用到的较为频繁的一种查找算法。在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,即顺序查找。二...
  • zhliro
  • zhliro
  • 2015-07-23 08:08:49
  • 2326

php二分查找、顺序查找算法

  • nuli888
  • nuli888
  • 2016-08-07 18:26:45
  • 3332

Java 二分查找算法及效率比较

1.前提:二分查找的前提是需要查找的数组必须是已排序的,我们这里的实现默认为升序 2、原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值 后;将要查找的值和数组...
  • tolcf
  • tolcf
  • 2014-08-10 17:30:56
  • 2383
    个人资料
    持之以恒
    等级:
    访问量: 97万+
    积分: 1万+
    排名: 854
    自动化测试学习交流群
    欢迎各位测试和自动化测试的伙伴加入QQ群,群号是:756276708,互相学习和提高测试技术和代码能力。
    最新评论