黑马程序员技术交流社区

标题: 小白请教一个数组问题 [打印本页]

作者: iverson    时间: 2015-5-7 10:36
标题: 小白请教一个数组问题
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]+"]");
        }       
        }
       
       
       
}

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

作者: KK要有光    时间: 2015-5-7 10:52
在数组这一块,老师不是讲的插入吧,而是讲的获取要插入元素的角标位置,即index,因为数组一旦定义并初始化,是不能做增删的。此时你的代码结果应该是返回5吧。
作者: 敢舍弃么    时间: 2015-5-7 14:39
你获取该数所在的角标之后可以重新new一个数组,将原来的数组遍历进新数组,并在遍历时在指定角标插入你要的数
作者: iverson    时间: 2015-5-8 16:11
敢舍弃么 发表于 2015-5-7 14:39
你获取该数所在的角标之后可以重新new一个数组,将原来的数组遍历进新数组,并在遍历时在指定角标插入你要 ...

貌似确实得新建一个数组,再遍历一次。。




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