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;
	}

}

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