本帖最后由 franksight 于 2015-2-20 23:19 编辑
用折半查找法查找数组中的元素,并在相应的位置插入该元素
- package exams;
- public class exams1 {
- /**
- * @param args
- */
-
- public static void main(String[] args) {
- int[] arr={1,3,5,7,8,9};
- int[] arr2=new int[arr.length+1]; //定义新数组,用于存储插入元素后的数据
- int index=halfSearch(arr,8);
- set(arr,arr2,8,index);
- print(arr);
- print(arr2);
- }
- //插入新数据
- public static void set(int[] arr,int[] arr2,int key,int index)
- {
- for(int i=0;i<index;i++)
- arr2[i]=arr[i];
- arr2[index]=key;
- for(int i=index+1;i<arr2.length;i++)
- arr2[i]=arr[i-1];
- }
- //二分查找查找位置
- public static int halfSearch(int[] arr,int key)
- {
- int min=0,max=arr.length ;
- int mid=(min+max)/2;
- while(key!=arr[mid])
- {
- if(key>arr[mid])
- min=mid+1;
- else if(key<arr[mid])
- max=mid-1;
- if(min>max)
- return min;
- mid=(min+max)/2;
- }
- return mid;
- }
- //负责打印数组
- public static void print(int[] arr)
- {
- for(int x=0;x<arr.length;x++)
- System.out.print(arr[x]+" ");
- System.out.println();
- }
- }
复制代码
|