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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

给定一个有序的数组,如果往该数组中存储一个元素,并保证这个数组还是有序的,那么这个元素的存储的角标如何获取?可以先通过二分查找,返回min的值,然后将待插入元素存在角标为min的数组位置,数组中角标为min以及比min大的角标所在的数组元素全部往后顺延一个位置。
class ArrayDemo{
       public static void main(String[] args) {
         int[] arr= {13,15,19,28,33,45,78,106};
         int index = binarySearch(arr,44);
         System.out.println("index = " + index);
      }

       public static int binarySearch(int[] arr, int key){
            int max,min,mid;
            min = 0;
            max = arr. length - 1;

             while(min <= max){
                  mid = (max + min) >> 1;

                   if(key > arr[mid])
                        min = mid + 1;
                   else if (key < arr[mid])
                        max = mid - 1;
                   else
                         return mid;
            }
            return min;
      }
}


1 个回复

倒序浏览
我抢的沙发{:2_30:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马