1. 程式人生 > >簡單二分搜索

簡單二分搜索

方法 找到 highlight 判斷 二分搜索 等於 clas 最小 代碼

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;//表示沒找到 需要返回一個值
	}
}

數組一分為二,從分開的位置開始搜索!不是從中間開始。代碼示例

前提:被查找的數組中的元素必須是有序的

簡單二分搜索