黑马程序员技术交流社区

标题: 二分搜索算法 [打印本页]

作者: tfy    时间: 2012-11-30 23:11
标题: 二分搜索算法
1.编程实现:二分搜索算法
解答:
public class SearchTest {
    /** 被搜索数据的大小 */
    private static final int size = 5000000;
    public static void main(String[] args) {
         long[] data = new long[size];
         // 添加测试数据
         for (int k = 0; k < data.length; k++) {
             data[k] = k;
         }
         // 要查找的数据
         long target = 4970002;
         binaryFindTest(data, target);
    }
    /**
      * 二分搜索算法实现
      *
      * @param data
      *            数据集合
      * @param target
      *            搜索的数据
      * @return 返回找到的数据的位置,返回-1 表示没有找到。
      */
    public static int binaryFind(long[] data, long target) {
         int start = 0;
         int end = data.length - 1;
        while (start <= end) {
            int middleIndex = (start + end) / 2;
            if (target == data[middleIndex]) {
                return middleIndex;
            }
            if (target >= data[middleIndex]) {
                start = middleIndex + 1;
            } else {
                end = middleIndex - 1;
            }
        }
        return -1;
   }
   /**
     * 二分搜索测试
     *
     * @param data
     *            数据集合
     * @param target
     *            搜索的数据
     */
   public static void binaryFindTest(long[] data, long target) {
        long start = System.nanoTime();
        int result = binaryFind(data, target);
        long end = System.nanoTime();
        System.out.println("binary search position:" + result);
        System.out.println("binary search time:" + (end - start));
   }
}


作者: 马海保    时间: 2012-11-30 23:28
学习了哦

作者: tfy    时间: 2012-11-30 23:29
一起加油哦
作者: 王震阳老师    时间: 2012-11-30 23:47
一起加油。
作者: tfy    时间: 2012-11-30 23:48
向你学习呀加油啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2