首页 > 编程语言 > 详细

经典算法之折半查找

时间:2016-02-18 10:03:05      阅读:140      评论:0      收藏:0      [点我收藏+]
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("查找失败!");
		}
		
	}
	
	
	
	
	
	
	
	
}

 

经典算法之折半查找

原文:http://www.cnblogs.com/airycode/p/5197115.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!