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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 棉/mg花/x糖 于 2013-5-26 19:15 编辑

数据结构:用数组实现二分查找算法

前提:数组中的元素必须是有序的。

程序源码如下:
  1. package com.yb.ArrayAndString;

  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;

  5. class FindSearch {
  6.     int binarySearch(int arr[],int searchValue) {
  7.         int low = 0;                                    //low是第一个数组元素的下标
  8.         int high = arr.length-1;                        //high是最后一个数组元素的下标
  9.         int mid = (low+high)/2;                         //mid是中间那个数组元素的下标
  10.         while(low<=high && arr[mid]!=searchValue) {
  11.             if(arr[mid] <searchValue) {
  12.                 low = mid +1;                           //要找的数可能在数组的后半部分中
  13.             } else {
  14.                 high = mid -1;                          //要找的数可能在数组的前半部分中
  15.             }
  16.             mid = (low+high)/2;
  17.         }
  18.         if(low > high) {
  19.             mid = -1;                                   //mid是数组元素下标,若为-1,表示不存在要查的元素
  20.         }
  21.         return mid;
  22.     }
  23. }

  24. public class BinaryFind {
  25.     /**
  26.      * @param args
  27.      */
  28.     public static void main(String[] args) throws IOException {
  29.         // TODO Auto-generated method stub
  30.         BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
  31.         int i,searchValue,mid;
  32.         String ch;
  33.         int arr[] = {2,4,7,18,25,34,56,68,89};
  34.         System.out.println("打印原始数据:");
  35.         for(i = 0; i < arr.length; i++) {
  36.             System.out.print(" "+arr[i]);
  37.         }
  38.         System.out.println("\n");
  39.         System.out.println("请输入要查找的整数:");
  40.         ch = keyin.readLine();
  41.         searchValue = Integer.parseInt(ch);
  42.         FindSearch p = new FindSearch();
  43.         mid = p.binarySearch(arr,searchValue);
  44.         if(mid == -1) {
  45.             System.out.println("没有找到!");
  46.         } else {
  47.             System.out.println("所查找的整数在数组中的位置下标是:"+mid);
  48.         }
  49.     }
  50. }
复制代码
运行结果:
            

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

5 个回复

倒序浏览
哥们,我发现你只要赚取足够多的技术分就可以去参加入学考试了,看你发的资源帖,你的基础掌握得应该很好了
回复 使用道具 举报
神之梦 发表于 2013-5-28 23:27
哥们,我发现你只要赚取足够多的技术分就可以去参加入学考试了,看你发的资源帖,你的基础掌握得应该很好了 ...

是含沙射影呢,还是真心赞许我呀~~~???
不过,还是谢谢了,我呢,到什么程度自己还是明白的,自知之明保证还是有的........
如果要是看技术分,你应该已经很了不起啦,至少比我,你是20期还是21期啊
我无论如何也只能去21期,20期是真心不行的~~~
回复 使用道具 举报
棉/mg花/x糖 发表于 2013-5-29 08:23
是含沙射影呢,还是真心赞许我呀~~~???
不过,还是谢谢了,我呢,到什么程度自己还是明白的,自知之明 ...

真心觉得哥们很牛了,至少我是远不及你的。还是不要看技术分的好,技术分只是各位版主看得起我,对我回答问题的一种鼓励,并不是我的技术就很高了。多少期还不确定,不过我正努力着呢,加油!哥们
回复 使用道具 举报
神之梦 发表于 2013-5-29 11:04
真心觉得哥们很牛了,至少我是远不及你的。还是不要看技术分的好,技术分只是各位版主看得起我,对我回答 ...

感谢感谢,得到如此评价,高兴地..........

对了,问下:你这个VIP是怎么搞到的啊,徐要什么条件啊?

回复 使用道具 举报
棉/mg花/x糖 发表于 2013-5-29 11:10
感谢感谢,得到如此评价,高兴地..........

对了,问下:你这个VIP是怎么搞到的啊,徐要什么条件啊?

http://bbs.itheima.com/vip.php
这是购买链接,里面的那些特权除了名字红色外,好像有些木用了,不知道咋回事
用金币买就行了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马