黑马程序员技术交流社区

标题: 给定一个有序的数组,如果往该数组中存储一个元素,并 [打印本页]

作者: 奔跑的小红帽    时间: 2015-10-15 23:22
标题: 给定一个有序的数组,如果往该数组中存储一个元素,并
给定一个有序的数组,如果往该数组中存储一个元素,并保证这个数组还是有序的,那么这个元素的存储的角标如何获取?可以先通过二分查找,返回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;
      }
}



作者: 奔跑的小红帽    时间: 2015-10-15 23:23
我抢的沙发{:2_30:}




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