4.24 訓練日誌

    總結一下剛學的二分思想。
    二分思想可以理解爲是一種將一個大問題分成兩個子題,當每次分析完兩個子問題後,捨棄其中一個不符合條件的子問題,再將符合條件的子問題一分爲二,反覆循環搜索判斷的操作,直至找到所求的數值或者子問題不能再一分爲二時爲止的思想。
      基本思想:
   (1)將n個元素分成個數大致相同相同的兩半,然後取a[n/2]與x作比較。
   (2)如果x = a[n/2],則已找到x,返回下標並結束算法;如果x < a[n/2],則只在數組a的左半部繼續搜索x;如果x < a[n/2],則只在數組a的右半部繼續搜索x;
      在二分搜索算法中,x每進行一次比較,待搜索的數據範圍就折半一次,直到找到x;最好情況下二分搜索算法的時間複雜度T(n) = O(1),即x爲數組最中間的值,x只需進行一次比較;最壞情況下,數組中沒有x,則T(n) = T(n / 2) + O(1),其中n^d = 1 = n^0,logb a = log2 1 = 0,所以d = logb a;所以最壞情況下二分搜索算法的時間複雜度T(n) = O(n^d*log n) = O(log n);
     在二分搜索算法中,只需要n個空間用於存放n個元素組成的數組a,無需其餘輔助空間,所以二分搜索算法的空間複雜度爲O(1);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章