二分法尋找

來源:互聯網
上載者:User

標籤:

  當資料量很大適宜採用該方法。採用二分法尋找時,資料需是排好序的。主要思想是:(設尋找的數組區間為array[low, high])(1)確定該期間的中間位置K(2)將尋找的值T與array[k]比較。若相等,尋找成功返回此位置;否則確定新的尋找地區,繼續二分尋找。地區確定如下:a.array[k]>T 由數組的有序性可知array[k,k+1,……,high]>T;故新的區間為array[low,……,K-1]b.array[k]<T 類似上面尋找區間為array[k+1,……,high]。每一次尋找與中間值比較,可以確定是否尋找成功,不成功當前尋找區間縮小一半。遞迴找,即可,時間複雜度:O(log2n)。

  假如有一組數為3,12,24,36,55,68,75,88要查給定的值24.可設三個變數front,mid,end分別指向資料的上界,中間和下界,mid=(front+end)/2.   1.開始令front=0(指向3),end=7(指向88),則mid=3(指向36)。因為mid>x,故應在前半段中尋找。   2.令新的end=mid-1=2,而front=0不變,則新的mid=1。此時x>mid,故確定應在後半段中尋找。   3.令新的front=mid+1=2,而end=2不變,則新的mid=2,此時a[mid]=x,尋找成功。   如果要尋找的數不是數列中的數,例如x=25,當第三次判斷時,x>a[mid],按以上規律,令front=mid+1,即front=3,出現front>end的情況,表示尋找不成功。   例:在有序的有N個元素的數組中尋找使用者輸進去的資料x。 演算法如下:  1.確定尋找範圍front=0,end=N-1,計算中項mid=(front+end)/2。   2.若a[mid]=x或front>=end,則結束尋找;否則,向下繼續。   3.若a[mid]<x,說明待尋找的元素值只可能在比中項元素大的範圍內,則把mid+1的值賦給front,並重新計算mid,轉去執行步驟2;若a[mid]>x,說明待尋找的元素值只可能在比中項元素小的範圍內,則把mid-1的值賦給end,並重新計算mid,轉去執行步驟2。 [一維數組,折半尋找] Java代碼:
 1 public class BubbleTest 2 { 3 public static int binary(int[] array, int value) 4 { 5 int low = 0; 6 int high = array.length - 1; 7 while(low <= high) 8 { 9 int middle = (low + high) / 2;10 if(value == array[middle])11 {12 return middle;13 }14 if(value > array[middle])15 {16 low = middle + 1;17 }18 if(value < array[middle])19 {20 high = middle - 1;21 }22 }23 return -1;24 }25 public static void main(String[] args)26 {27 int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};28 int value = binary(a, 9);29 System.out.println(value);30 }31 }

 

二分法尋找

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.