对一个有序数组进行折半查找和把一个整数插入这个数组序列,使其仍旧有序
来源:互联网 发布:淘宝代购专柜衣服真假 编辑:程序博客网 时间:2024/05/16 07:06
1.对一个有序的数组进行二分查找的两种方式。
2.将一个整数插入到该数组的序列中,使新得到的数组序列仍然有序。
class HalfSearh{public static void main(String[] args) {int arr[]={1,3,4,7,9,13,17};//System.out.println(search(arr,8)); // System.out.println(search1(arr,8));System.out.println(getIndex(arr,8));insert(arr,8);}/**折半查找的第一种方式public static int search(int arr[],int key){int min=0;int max=arr.length-1;int mid=(min+max)/2; while(key!=arr[mid]){ if(key>mid)min=mid+1;else max=mid-1;if(min>max)return -1; mid=(min+max)/2;}return mid;}*//**折半查找的第二种方式public static int search1(int arr[],int key){ int min=0,max=arr.length-1,mid=(min+max)/2; while(min<=max){ if(key>arr[mid]) min=mid+1; else if(key<arr[mid]) max=mid-1; else return mid; } return -1;}*//**如何在一个有序数组里面插入一个值,使得这个数组仍然有序。*/ public static int getIndex(int arr[],int key){ int min=0,max=arr.length-1,mid=(min+max)/2; while(min<=max){ if(key>arr[mid]) min=mid+1; else if(key<arr[mid]) max=mid-1;else return mid; mid=(min+max)/2; } return min;} public static void insert(int[]b,int key ){ int a=getIndex(b,key); int []arr1=new int[b.length+1]; for(int i=0;i<a;i++) arr1[i]=b[i]; for(int j=a+1;j<arr1.length;j++) arr1[j]=b[j-1]; arr1[a]=key; for(int x=0;x<arr1.length;x++) System.out.print(arr1[x]+" ,"); }}