public class MyOrderArray { int elemnet; long[] arr; public MyOrderArray(){ arr=new long[50]; } public MyOrderArray(int maxsize){ arr=new long[maxsize]; } //添加有序数组 public void insert(long value){ int i; for(i=0;i<elemnet;i++){ if(arr[i]>value){ break; } } //比如在2456这个数组中查入3,那456要整体向后移动,从6后面开始操作 for(int j=elemnet;i>i;j--){ arr[j]=arr[j-1]; } //大的数据全部向后移,这样数据就可以添加进来了 arr[i]=value; elemnet++; } //二分法查找,前提是数组是有序的 public int binarySearch(int value){ int middle=0; //最左边的数据 int low=0; int pow=elemnet; while(true){ middle=(pow+low)/2; if(arr[middle]==value){ return value; }else if(low>pow){ return -1; }else if(arr[middle]>value){ pow=middle-1; }else{ low=middle+1; } } } }
数组的二分查找
最新推荐文章于 2022-12-29 21:44:43 发布