二分查找算法

原创 2015年07月08日 15:02:18
public class BinarySearch {

	public static int binarySearch(int[] a, int start, int end, int des) {

		while (start <= end) {
			int middle = (start + end) / 2;
			if (des == a[middle]) {
				return middle;
			} else if (des < a[middle]) {
				end = middle - 1;//待查找的值小于中间值则在中间值左边查找,将右边界的end置中间值下角标的前一位
			} else {
				start = middle + 1;//待查找的值大于中间值则在中间值的右边查找,将左边界的start置中间值下角标的后一位
			}
		}
		return -1;//没有则返回-1
	}
  //测试
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int[] a = { 1, 3, 6, 7, 8, 10 };
		System.out.println(binarySearch(a, 0, 5, 8));
	}


时间复杂复杂度计算:二分查找的基本思想是将n个元素分成大致相等的两部分,去a[n/2]与x做比较,如果x=a[n/2],则找到x,算法中止;如果x<a[n/2],则只要在数组a的左半部分继续搜索x,如果x>a[n/2],则只要在数组a的右半部搜索x.


时间复杂度无非就是while循环的次数!


总共有n个元素,


渐渐跟下去就是n,n/2,n/4,....n/2^k,其中k就是循环的次数


由于你n/2^k取整后>=1


即令n/2^k=1


可得k=log2n,(是以2为底,n的对数)


所以时间复杂度可以表示O()=O(logn)

经典查找算法之二分查找

二分查找         作为查找算法中最基础的查找算法,时间复杂度为O(logn)。前提是序列有序,每次取序列中位数跟关键字比较,相等则返回中位数所在位置索引;小于关键字,则在中位数位置之后的子序列...
  • sean4m
  • sean4m
  • 2016年05月15日 10:36
  • 802

二分查找算法(Java版)

二分查找算法是非常经典且基本的算法。 1.二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序...
  • Mars_NAVY
  • Mars_NAVY
  • 2014年03月06日 22:04
  • 4275

二分查找算法之python实现

二分查找也叫折半查找,通过不断比较目标元素与一个有序序列(注意是有序序列)中间元素的值,达到每次查找都能排除一半元素的一种算法。 python实现如下: #!/usr/bin/python # -...
  • onlyanyz
  • onlyanyz
  • 2015年04月23日 15:01
  • 852

二分查找算法(Java)

今天在公司闲着蛋疼,网上瞎逛,偶然在InfoQ网站上看到一篇文章《计算机科学中最重要的32个算法》,原文地址:http://www.infoq.com/cn/news/2012/08/32-most-...
  • jackiehff
  • jackiehff
  • 2013年12月28日 14:42
  • 5047

查找算法之二分查找算法

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

Java实现二分查找法

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表...
  • hyxhbj1
  • hyxhbj1
  • 2017年06月01日 13:40
  • 214

二分查找算法:

二分查找算法:int bfind(int* a,int len,int val){    int m = len/2;    int l = 0;    int r = len;    while(l...
  • jing0611
  • jing0611
  • 2009年05月09日 12:24
  • 256

查找方法----二分查找

 二分查找又称折半查找,它是一种效率较高的查找方法。  【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。  【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;其...
  • akof1314
  • akof1314
  • 2009年08月06日 08:07
  • 3383

二分查找算法-精简 稳定

//************************************* // 函数名称:FineTab 二分查找算法 ->查温度表 // 函数功能:查找数据在表中对应的位置 表中数据从大到小...
  • chuangwu2009
  • chuangwu2009
  • 2014年05月27日 16:49
  • 946

二分查找算法

#include "stdio.h"int BinarySearch(const int A[], int key, int N){int Low, Mid, High;Low = 0;High = ...
  • williamVII
  • williamVII
  • 2004年09月14日 13:25
  • 1355
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分查找算法
举报原因:
原因补充:

(最多只允许输入30个字)