经典算法之折半查找

package 折半查找;

import java.util.Scanner;

public class BinarySearch {

	/**
	 * 折半查找:要求查找的数据是线性保存,表中的数据是按照从小到大的顺序排列的
	 */
	
	public static int source[] = {6,12,28,37,54,65,69,83,90,92};
	
	public static int binarySearch(int s[],int n,int key){
		int low,high,mid;
		low = 0;
		high = n-1;
		while (low <= high) {
			mid = (low+high)/2;
			if (s[mid] == key) {
				return mid;
			} else if (s[mid] > key) {
				high = mid-1;
			} else {
				low = mid+1;
			}
			
		}
		
		return -1;
	}
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入关键字");
		int key = input.nextInt();
		int pos = binarySearch(source, source.length, key);
		System.out.println("输出原始数据:");
		for (int i = 0;i<source.length;i++) {
			System.out.printf("%d\t",source[i]);
		}
		System.out.println();
		
		if (pos >= 0) {
			System.out.printf("查找成功,该关键字位于数组的第%d个位置\n",pos);
		}else{
			System.out.println("查找失败!");
		}
		
	}
	
	
	
	
	
	
	
	
}

 

posted on 2016-02-18 09:13  airycode  阅读(235)  评论(0编辑  收藏  举报

导航