折半查找:必须是在有序的表中进行。这是重要的一点。这折半查找提高了效率。
1.待查找数据值比中间元素值小,则以整个查找范围的前半部分作为新的查找范围。
2.待查找数据值比中间元素值大,则以整个查找范围的后半部分作为新的查找范围。
一种是实现的角标;一种是直接实现的数值。
//折半查找就是找到,必须是有序的列表。public class halfsearch {public static void mian(String args[]){int[]arry={1,10,51,3,4,5};int jg=halfSearch(arry, 2);System.out.PRint(jg);}//折半查找第一种方法 public static int halfSearch(int[] arry,int key){ int min=0; //最大的角表; int max=arry.length-1; int mid; while(max>min){ mid=(min+max)/2; if(key>mid){ min=mid+1; } else if(key<mid) { max=mid=1; }else //返回的是角标 return mid; } //不再范围内的时候就是越界反悔-1return -1; }//第二种方法 public static int halfSearch_2(int[] arry,int key){ int min=0; int max=arry.length-1; int mid=(min+max)/2; //比较的是中间的值和要找的值进行比较 while(key!=arry[mid]){ if(key>arry[mid]){ min=mid+1; }else if(key<arry[mid]){ max=mid-1; } //如果最大的值和最小的值重合以后返回-1 else if(min>max){ return -1; } mid=(min+max)/2; } return mid; }}
新闻热点
疑难解答