java基礎回顧之二分查找(算法)

分析圖

在這裏插入圖片描述

package com.bjpowernode.demo02;
/**
 * 二分查找/折半查找
 * @author Administrator
 *
 */
public class Test12 {

	public static void main(String[] args) {
		//定義數組, 折半(二分)查找前, 數組必須由小到大排序
		int [] data = {7, 21, 56, 66, 89, 111, 543};

		int index = binarySearch( data, 66);
		System.out.println( index );
		
		System.out.println( binarySearch(data, 7));
		System.out.println( binarySearch(data, 543));
		System.out.println( binarySearch(data, 222));
	}

	//在data數組中查找元素key,返回元素在數組中的索引值, 如果數組中沒有該元素,返回-1
	private static int binarySearch(int[] data, int key) {
		int from = 0 ; 
		int to = data.length-1;
		int mid = (from + to)/2;
		
		while(from <= to){
			if ( data[mid] == key) {
				return mid;
			}else if (data[mid] < key) {
				//在右一半
				from = mid+1;
				mid = (from + to)/2;
			}else{		//左一半
				to = mid-1;
				mid = (from + to)/2;
			}
		}
		
		return -1;
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章