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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
需求:
1.有一个有序的数组,想要将一个元素插入数组中,
还要保证数组是有序的,如何获取元素在数组中的位置
2.把这个元素插入数组,并打印插入后的数组
*/
class ArrayT
{
        public static void main(String[] args)
        {
                int[] arr = {2,4,5,7,8,19,32,45};//插入8
                printArray(arr);//插入前打印
                int index = getIndex(arr, 8);
                System.out.println("index = " + index);//打印插入位置

        }

        //定义查找插入位置方法
        public static int getIndex(int[] arr, int key)
        {
                int min = 0, max = arr.length-1, mid;

                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;
        }

        //定义打印数组方法
        public static void printArray(int[] arr)
        {
                System.out.print("[ ");
                for (int x = 0; x < arr.length; x++)
                {
                        if (x != arr.length - 1)
                        {
                                System.out.print(arr[x] + ", ");
                        }
                        else
                                System.out.println(arr[x] + " ]");
                }
        }

        //求把元素插入数组的方法
        /*
         需求2思路:
        1. 定义一个新的数组,存放插入元素后的数据。
        2. 新数组元素个数,arr.length+1
        3.
        */
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人加油

查看全部评分

1 个回复

正序浏览
我也不明白,不用集合的话,怎么才可以添加元素

不过学了listIterator 好方便,遍历集合, 加上判断语句  一个add 搞定,或者直接Collections.sort()排完序 ,但是未学集合之前只要能懂定位元素在数组中的角标就行

至于吗,int[] arr 只是定义 数组 ,它里面好像没有具体的操作 元素的方法,拿来用就好了。如果非要改变里面的值,就把它变成集合,然后转变回来。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马