本帖最后由 早知道 于 2013-9-27 20:33 编辑
- public class Test7 {
- /**
- * @param args
- */
- public static void main(String[] args) {
- int[] arr ={2,4,5,7,8,19,32,45};
- int index = halfSearch(arr,8);
- int[] array1 = new int[arr.length+1];
- int[] array2 = new int[arr.length-index];
- for(int i=0,j=0;i<index;i++,j++){
- array1[j]=arr[i];
- }
- for(int i=0;i<array1.length;i++){
- System.out.println(array1[i]);
- }
- for(int i=index,j=0;i<arr.length;i++,j++){
- array2[j]=arr[i];
- }
- System.out.println("====");
- array1[index]=8;
- for(int i=index+1,j=0;i<array1.length;i++,j++){
- array1[i]=array2[j];
- }
- for(int i=0;i<array1.length;i++){
- System.out.println(array1[i]);
- }
- }
- public static int halfSearch(int[] arr,int key){
- int min=0;
- int max=arr.length-1;
- int mid=(min+max)/2;
- while(arr[mid]!=key){
- if(arr[mid]<key){
- min=mid+1;
- }else if(arr[mid]>key){
- max=mid-1;
- }
- if(min>max)
- return -1;
- mid=(min+max)/2;
- }
- return mid;
- }
- }
复制代码 上面代码是实现在原数组基础上添置8,并且数组要有序的。数组不可改变长度,所以只能新建了,感觉这样很麻烦,不知道还有没有更好的办法?
|