黑马程序员技术交流社区

标题: 关于有序数组插入数的解决方法i [打印本页]

作者: 薛大千    时间: 2015-4-10 22:41
标题: 关于有序数组插入数的解决方法i
/*
如何向固定的有序数组中添加一个数字
思路: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;
        }
}





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