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 ",source[i]); } System.out.println(); if (pos >= 0) { System.out.printf("查找成功,该关键字位于数组的第%d个位置 ",pos); }else{ System.out.println("查找失败!"); } } }