二分查找復雜度計算


二分查找的基本思想是將n個元素分成大致相等的兩部分,去a[n/2]與x做比較,如果x=a[n/2],則找到x,算法中止;如果x<a[n/2],則只要在數組a的左半部分繼續搜索x,如果x>a[n/2],則只要在數組a的右半部搜索x.

時間復雜度無非就是while循環的次數!

總共有n個元素,

漸漸跟下去就是n,n/2,n/4,....n/2^k,其中k就是循環的次數

由於你n/2^k取整后>=1

即令n/2^k=1

可得k=log2n,(是以2為底,n的對數)

所以時間復雜度可以表示O()=O(logn)

 

 

  1. 二分查找的時間復雜度是O(log(n)),最壞情況下的時間復雜度是O(n)。
  2. 二分查找的一個條件是待查詢的數組是有序的,我們假設這里的數組是升序的。
  3. 二分查找的主要思路就是設定兩個指針start和end分別指向數組元素的收尾兩端,然后比較數組中間結點arry[mid]和待查找元素。如果待查找元素小於中間元素,那么表明帶查找元素在數組的前半段,那么將end=mid-1,如果待查找元素大於中間元素,那么表明該元素在數組的后半段,將start=mid+1;如果中間元素等於待查找元素,那么返回mid的值。

二分查找可以使用遞歸非遞歸的方法來解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM