時間複雜度 二分法

2021-07-24 12:37:31 字數 436 閱讀 3738

二分法是每次取中間值與目標值進行判斷,若相同則返回中間值的標號,不同則將中間值賦給取值邊界較遠的一邊,再次取中間值進行比較,直至相同。

'''先定義用於比較的陣列'''

for(i=0;i10+10;

'''二分法'''

int search(int list,int num)

return m;

}

第1次二分:n/2

第2次二分:n/4

第3次二分:n/8

·············

第m次二分:n/2^m

最好情況,第一次二分就找到了目標,t(n)=o(1)。

最差情況,最後一次二分才找到目標,二分是到最後乙個值結束,所以令n/2^m=1,得到m=log(2)n (logn,底數為2),t(n)=o(log(2)n)。

二分法時間複雜度計算

總共有n個元素,每次查詢的區間大小就是n,n 2,n 4,n 2 k 接下來操作元素的剩餘個數 其中k就是迴圈的次數。k在遞迴的時候也可以說是遞迴的深度 由於n 2 k取整後 1,即令n 2 k 1,可得k log2n,是以2為底,n的對數 所以時間複雜度可以表示o o logn 總結一下就是 二分...

二分法時間複雜度計算分析

二分法即在查詢的同時先將被查詢的鍵和子陣列的中間鍵進行比較。如果被查詢的鍵小於中間鍵,則在左子陣列 中繼 續查詢,如果大於就在右陣列中繼續查詢,否則中間鍵就是我們要找的鍵。首先我們假設f n 為使用二分法在長度為n的有序列表中查詢特定鍵的查詢次數,則易得不等式 f n f n 2 1 因為無論要查詢...

查詢(時間複雜度 二分法)

package day52 因為最近開始做專案時間就顯得很緊張了,停了乙個禮拜了快,有點兒偷懶了 把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非遞減排序的陣列的乙個旋轉,輸出旋轉陣列的最小元素。例如陣列為的乙個旋轉,該陣列的最小值為1。note 給出的所有元素都大於0,...