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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© iverson 中级黑马   /  2015-5-7 10:36  /  701 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class ArrayHalfSort {

        public static int getIndex(int[] arr,int key){
                int min=0,max=arr.length-1,mid;
                while(min<=max){
                        mid=(min+max)>>1;
                if(key>arr[mid])
                        min=mid+1;
                else if(key<arr[mid])
                        max=mid-1;
                else return mid;
                }
                return min;
        }
        public static void main(String[] args) {
                int[] arr={2,4,5,7,9,32,56};
                int index=getIndex(arr, 12);
                System.out.println("index= "+index);
//               
                printArray(arr);
        }
        public static void printArray(int[] arr){
                System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
                if(i!=arr.length-1)
                        System.out.print(arr[i]+", ");
                else System.out.println(arr[i]+"]");
        }       
        }
       
       
       
}

看毕老师视频讲的折半查询一个数后在一个数组中插入该数。可是不会了。。。请教一下,该怎么做才能不覆盖那个角标位的数?

3 个回复

倒序浏览
在数组这一块,老师不是讲的插入吧,而是讲的获取要插入元素的角标位置,即index,因为数组一旦定义并初始化,是不能做增删的。此时你的代码结果应该是返回5吧。
回复 使用道具 举报
你获取该数所在的角标之后可以重新new一个数组,将原来的数组遍历进新数组,并在遍历时在指定角标插入你要的数
回复 使用道具 举报
敢舍弃么 发表于 2015-5-7 14:39
你获取该数所在的角标之后可以重新new一个数组,将原来的数组遍历进新数组,并在遍历时在指定角标插入你要 ...

貌似确实得新建一个数组,再遍历一次。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马