简单二分搜索

Posted 华山小叮当

tags:

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

class _6ErFenSeek{
	public static void main(String[] args){
		int[] arr = {30, 52, 25, 60, 10};//静态简写定义一个数组 并符初始值
		_5maoPao.maoPao(arr);//调用其他类中的方法实现对数组排序
		System.out.println(seek(22,arr));//给方法传入一个值利用方法判断该值在数组内的索引值
	}
	static int seek(int i, int[] arr){//定义一个方法 给方法定义两个参数一个int型一个数组
		int minIndex = 0;//最小索引
		int maxIndex = arr.length - 1;//最大索引
		int miIndex = (minIndex + maxIndex) / 2;//中间索引
		while(minIndex <= maxIndex){//判断最小索引是否小于等于最大索引 如果是则说明值没找到 如果是则表示已找到值的索引返回索引
			if(i > arr[miIndex]){//如果二分后对应索引的值比i值小 则i值在后一半内
				minIndex = miIndex + 1;//最小索引值为中间值+1
			}else if(i < arr[miIndex]){//如果二分后对应索引的值比i值大 则i值在前一半内
				maxIndex = miIndex - 1;//最大索引值为中间值-1
			}else{
				return minIndex;//返回索引值
			}
			miIndex = (minIndex + maxIndex) / 2;//重新设置中间索引
		}
		return -1;//表示没找到 需要返回一个值
	}
}

数组一分为二,从分开的位置开始搜索!不是从中间开始。代码示例

前提:被查找的数组中的元素必须是有序的

以上是关于简单二分搜索的主要内容,如果未能解决你的问题,请参考以下文章

用于二分搜索的错误简单函数 (C++)

简单二分搜索

网易云课堂_C语言程序设计进阶_第五周:递归与简单算法:递归搜索二分搜索简单排序

如何使用伪代码开发线性搜索和二分搜索算法。?

4/4 贪心选数+最长上升子序列+简单染色二分图+二进制搜索

二分的几种简单应用——入门