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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 施大勇 中级黑马   /  2013-8-18 18:21  /  1844 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 施大勇 于 2013-9-28 15:35 编辑
  1. //想在一个数组中确定一个将要插入的数据的位置?而Arrays中提供的方法返回值是不对的。为何?

  2. import java.util.Arrays;
  3. public class ArrayTest3 {
  4. /**
  5.   * 折半查找。
  6.   * 并自定义一个自定义的折半查找方法,要了解折半查找的过程。
  7.   */
  8.            public static void main(String[] args) {
  9.   // 用JAVA已经定义好的方法。
  10.   /*
  11.    * Arrays类中提供了大量的二分查找和排序方法,可以返回一个指定的元素的索引,也可以返回一个元素的将插入位置。
  12.    * 插 入索引应取决对值并减1。
  13.    *
  14.    * Arrys提供的二分查找用查将要提供的索引位置时并不完全是下确的,还需要进一步转换。
  15.    * */
  16.                      int [] arr={1,10,45,89};
  17.                      int index=Math.abs(Arrays.binarySearch(arr,100))-1;
  18.                      System.out.println("index="+index);
  19.   
  20.   /*
  21.    * 下面定义一个自定义的二分查找。
  22.    * */
  23.                    int index1= binarySearch(arr,100) ;
  24.                    System.out.println("index="+index1);
  25.        }
  26.         public static int binarySearch(int []arr,int i){
  27.                    int min,max,mid;
  28.                    min=0;
  29.                    max=arr.length-1;
  30.                    while (min<=max){
  31.                    mid=(min+max)/2;
  32.                    if (i>arr[mid])
  33.                         min=mid+1;
  34.                   else if (i<arr[mid])
  35.                         max=mid-1;
  36.                   else
  37.                        return mid;
  38.                   }
  39.                  return min;
  40.        }
  41. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 神马都是浮云

查看全部评分

0 个回复

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