二分查詢時間複雜度的計算

2021-09-02 12:32:48 字數 524 閱讀 1699

時間複雜度無非就是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)

二分查詢的時間複雜度是o(log(n)),最壞情況下的時間複雜度是o(n)。

二分查詢的乙個條件是待查詢的陣列是有序的,我們假設這裡的陣列是公升序的。

二分查詢的主要思路就是設定兩個指標start和end分別指向陣列元素的收尾兩端,然後比較陣列中間結點arry[mid]和待查詢元素。如果待查詢元素小於中間元素,那麼表明帶查詢元素在陣列的前半段,那麼將end=mid-1,如果待查詢元素大於中間元素,那麼表明該元素在陣列的後半段,將start=mid+1;如果中間元素等於待查詢元素,那麼返回mid的值。

二分查詢可以使用遞迴非遞迴的方法來解決

二分查詢時間複雜度的計算

時間複雜度無非就是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 二分查詢的時間複雜度是o log n 最壞情況...

二分查詢時間複雜度推導

二分查詢是乙個非常常用且簡潔的查詢演算法,相信很多人也知道它的時間複雜度是logn,但是我看網上的大多數部落格給出的所謂推導過程都十分不嚴謹,於是我花了些時間自己寫了推導過程。首先上二分查詢的 public int find int x,int data 查詢元素下標,沒找到返回 1 param x...

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

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