携程2017 校招编程题

第一题二分查找

import java.util.*;

public class Main {
	 private static int binarySearch(int[] a, int fromIndex, int toIndex, int key) {
		    int low = fromIndex;
		    int high = toIndex<img src="http://img.blog.csdn.net/20160917221201291?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />;<img src="http://img.blog.csdn.net/20160917221139166?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
		    while (low <= high) {
		        int mid = (low + high) >>> 1;
		        int midVal = a[mid];
		        if (midVal < key)
		        low = mid + 1;
		        else if (midVal > key)
		        high = mid - 1;
		        else
		        return mid; // key found
		    }
		    return -(low + 1);  // key not found.
		    }
	 
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String line = in.nextLine();
		int key = Integer.parseInt(line);
		
		line = in.nextLine();
		int length = Integer.parseInt(line);
		line = in.nextLine();
		String[] str  = line.split(" ");
		int i = 0;
		int[] arr = new int[length];
		for(i=0; i<length; i++){
			arr[i] = Integer.parseInt(str[i]);
		}
		
		int ret = binarySearch(arr, 0, length, key);
		System.out.println(ret);
	}
}


你可能感兴趣的:(携程2017 校招编程题)