########################################
二分查找,是一種演算法,又稱之為折半查找,對于待查找的序列要求必須是有序的,
步驟:每次取中間位置的值與待查找的值進行比較,如果中間位置的值比待查值大,則在前半部分回圈這個查找程序;如果中間位置的值比待查值小,則在后半部分回圈這個查找程序,一直查找到為止,否則序列中沒有待查找的值,
比如給定一個陣列 [] a={2,3,6,8,9,11,14};
假如我們找的是a[i]=8這個值的話,因為它在中間位置,就直接回傳其陣列的下標;
假如要找的是a[i]=3,則用中間位置的值(8)與待查值(3)進行比較,發現比中間值小,則在左邊部分回圈進行二分查找,找到值為3對應的位置,
假如要找的是a[i]=14,則用中間位置的值(8)與待查值(14)進行比較,發現比中間值大,則在右邊部分回圈進行二分查找,找到值為14對應的位置,
########################################
接下來看代碼的具體實作:
1 public static int BinarySearch(int []array,int a){ 2 int lo=0; 3 int hi=array.length-1; 4 int mid; 5 while(lo<=hi){ 6 mid=(lo+hi)/2; //中間位置 7 if(array[mid]==a){ 8 return mid+1; 9 }else if(array[mid]<a){ //向右查找 10 lo=mid+1; 11 }else{ //向左查找 12 hi=mid-1; 13 } 14 } 15 return -1; 16 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/139962.html
標籤:其他
上一篇:冒泡排序的實作及優化和變形
下一篇:長跑排名預測
