/*
如何向固定的有序数组中添加一个数字
思路: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;
}
}
|
|