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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© tfy 中级黑马   /  2012-11-30 23:11  /  1057 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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));
   }
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

4 个回复

倒序浏览
学习了哦
回复 使用道具 举报
tfy 中级黑马 2012-11-30 23:29:22
藤椅
一起加油哦
回复 使用道具 举报
一起加油。
回复 使用道具 举报
tfy 中级黑马 2012-11-30 23:48:34
报纸
向你学习呀加油啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马