A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 裤裆里的温柔、 中级黑马   /  2014-7-12 13:43  /  890 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

必须是有序的数组才能进行二分查找
  1. package cn.sunzn.dichotomy;

  2. public class DichotomySearch {
  3.    public static void main(String[] args) {
  4.        int[] arr = new int[] { 12, 23, 34, 45, 56, 67, 77, 89, 90 };
  5.        System.out.println(search(arr, 12));
  6.        System.out.println(search(arr, 45));
  7.        System.out.println(search(arr, 67));
  8.        System.out.println(search(arr, 89));
  9.        System.out.println(search(arr, 99));
  10.    }

  11.    public static int search(int[] arr, int key) {
  12.        int start = 0;
  13.        int end = arr.length - 1;
  14.        while (start <= end) {
  15.            int middle = (start + end) / 2;
  16.            if (key < arr[middle]) {
  17.                end = middle - 1;
  18.            } else if (key > arr[middle]) {
  19.                start = middle + 1;
  20.            } else {
  21.                return middle;
  22.            }
  23.        }
  24.        return -1;
  25.    }
  26. }[b][/b]
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马