------------------------------------------------------------------------------------------------------------------------------------------------------------
/*
练习:有一个有序的数组,想要将一个元素插入到该数组中,
还要保证该数组是有序的。如何获取该元素在数组中的位置.
*/
class ArrayDemo{
public static void main(String[] args){
int[] arr={1,3,5,8,9,22,55,77};
int index=getIndex(arr,100);
arr=getNewArr(arr,index,100);
System.out.println(arr[index]);
}
//找到要插入的数组下标位置
public static int getIndex(int[] arr,int key){
int min,max,mid;
min=0;
max=arr.length-1;
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 int[] getNewArr(int[] arr,int index,int value){
int[] new_arr=new int[arr.length+1];
for(int i=0;i<index;i++){
new_arr[i]=arr[i];
}
new_arr[index]=value;
for(int i=index;i<arr.length;i++){
new_arr[i+1]=arr[i];
}
return new_arr;
}
}