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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

/*
如何向固定的有序数组中添加一个数字
思路:1.先查找数组中是否存在这个数字,如果有找到,如果没有就确定他的索引;
  2.重新定义一个数组,原数组索引之前的元素不变,数组之后的索引加1,

*/
class  ArrTest
{
        public static void main(String[] args)
        { int []a={1,3,4,6,7,9,10};
        int key=5;
        System.out.println("输出的原数组为:");
        for (int i=0; i<a.length;i++ )
        {System.out.print(a[i]+",");
        }
        System.out.println();
        int arr1[]=new int[a.length+1];//重新定义一个数组
                int c=arr(a,key);
                for (int i=0;i<c;i++ )//实现数组的重新赋值,
         {arr1[i]=a[i];}
         arr1[c]=key;
        for (int i=c;i<a.length ;i++)
                { arr1[i+1]=a[i];}
        System.out.println("完成插入数字的数组为:");
        for (int i=0;i<a.length+1 ;i++ )
                { System.out.print(arr1[i]+",");}
        }
               
public static int arr(int[] arr,int key)//查找元素的方法,
        {
                int min,max,mid;
                min = 0;
                max = arr.length-1;
                mid = (max+min)/2;
                int arr1[]=new int[arr.length];

                while(arr[mid]!=key)
                {
                        if(key>arr[mid])
                                min = mid + 1;
                        else if(key<arr[mid])
                                max = mid - 1;

                        if(min>max)//这一步必须有,否则循环无法停止,
                                return min;
                        mid = (max+min)/2;
                }
                return mid;
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马