二分法的時間複雜度為olog2n是什麼意思

2021-03-06 16:31:28 字數 3079 閱讀 4900

1樓:匿名使用者

網頁連結

你可以看看我的上面這個部落格

由於二分查詢每次查詢都是從陣列中間切開查詢,所以每次查詢,剩餘的查詢數為上一次的一半,從下表可以清晰的看出查詢次數與剩餘元素數量對應關係

表-查詢次數及剩餘數

第幾次查詢    剩餘待查詢元素數量

1                    n/22                    n/(2^2)3                    n/(2^3)…                    …k                    n/(2^k)從上表可以看出n/(2^k)肯定是大於等於1,也就是n/(2^k)>=1,我們計算時間複雜度是按照最壞的情況進行計算,也就是是查到剩餘最後一個數才查到我們想要的資料,也就是

n/(2^k)=1

=>n=2^k

=>k=log2n

所以二分查詢的時間複雜度為o(log2n)

2樓:食人魚肉前

二分查詢基本思路是先確定該區間的中間點,然後比較,再一半中再找中間點比較……直到找到.設中間點總數:n,平均查詢長度為(n+1)∕ n×㏒2﹙n+1﹚ -1 ≈㏒2﹙n+1﹚-1

在應用極限化簡就是log2(n)

二分法的時間複雜度為o(log2n)是什麼意思?

3樓:不是7個漢字嗎

二分法的基本思想如下:

假設資料是按升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查詢成功;若x小於當前位置值,則在數列的前半段中查詢;若x大於當前位置值則在數列的後半段中繼續查詢,直到找到為止。

由於是陣列是預先排序好的,所以可以採用折半查詢的方式,每次拋掉待查詢部分的一半

這樣,長度為n的陣列,只需要log2n次查詢即可,2是對數的底。

例如,長度為7的陣列,最多只需要3次就可以找到o(log2n)只是表示是log2n同一數量級,因為有個取整的問題,而且也有可能在查詢過程中就已經找到(也就是某個折半查詢點正好是待查詢資料),這樣o(log2n)就是一個上限

4樓:

看資料結構或者演算法導論去。。。

複雜度o(nlog2n)怎麼計算的?

5樓:匿名使用者

for(int j=1; j<=n; j*=2)這個迴圈最終執行的次數假設為x,則x次的時候j=2^x 。

當j>n時停止執行,於是2^x>n ,則可以認為該迴圈一共執行了log2(n)次。

所以該迴圈的時間複雜度為o(log2(n)),簡記為o(log n) ,忽略掉2的底數。

方法:1、首先,看外迴圈for(i=0;i2、再看內部迴圈,for(j=1;jn===》x=log2(n)。

3、如果把兩個迴圈合在一起看,也就是一共迴圈了n個x次,也就是log2(n)。

為什麼對於n個資料,二分法查詢資料 時間複雜度為0(log2(底數)n)?

6樓:剛剛1人

二分查詢基本思路是先確定該區間的中間點,然後比較,再一半中再找中間點比較……直到找到。設中間點總數:n,平均查詢長度為(n+1)∕ n×㏒2﹙n+1﹚ -1 ≈㏒2﹙n+1﹚-1

在應用極限化簡就是log2(n)

時間複雜度o(log2^n)的迴圈語句

7樓:匿名使用者

錯了 明顯的程式

i的初始值應當為1.

這個迴圈執行的次數為以2為底n的對數次

8樓:匿名使用者

....就相當於2^m = n兩邊取以2為底的對數。就是m的值。

二分法查詢最壞情況下需要比較次數,為什麼n次和o(log(2)n)都對呢?後者是什麼意思

9樓:匿名使用者

後者是演算法複雜度的意思

n次是正確的嗎?應該是log(2)n次才對啊

10樓:匿名使用者

用二分法查詢最多log2^n

用順序查詢最多是n次

11樓:野馬皇上

順序查詢需要比較n次,二分法查詢需要比較log²n次

二分法查詢的時間複雜度o是怎麼得來的

12樓:風流小子愛美人

二分法的基本思想如下:

假設資料是按升序排序的,對於給定值x,從序列的中間位置開始比較,如果當前位置值等於x,則查詢成功;若x小於當前位置值,則在數列的前半段中查詢;若x大於當前位置值則在數列的後半段中繼續查詢,直到找到為止。

由於是陣列是預先排序好的,所以可以採用折半查詢的方式,每次拋掉待查詢部分的一半

這樣,長度為n的陣列,只需要log2n次查詢即可,2是對數的底。

例如,長度為7的陣列,最多只需要3次就可以找到o(log2n)只是表示是log2n同一數量級,因為有個取整的問題,而且也有可能在查詢過程中就已經找到(也就是某個折半查詢點正好是待查詢資料),這樣o(log2n)就是一個上限

為什麼二分查詢法的算術複雜度為o(log_{2}n)

13樓:伶揚國國

是有序線性表copy,二分查詢,不可能比bai較n次啊,比較n次你等於du是把整個線zhi性表遍歷了一遍.二分查dao找每次可以排除一半元素.

比如123456789,你要找2,首先查中間元素5,大於2,所以直接排除掉5右邊的6789

然後在1234裡繼續二分查詢.

每次排除1/2的元素,所以是o(log2n)

log2n是什麼意思?

14樓:匿名使用者

log2n是數學中的對數,是以2為底n的對數為多少,也就是2的多少次方是n

15樓:匿名使用者

設這個數是x=log2n

那麼就是2的x 次方=n

16樓:ob王者

o(log2n)表示演算法的時間複雜度,用的是二分法的思想,比方將一根線一直對摺,直到一個點為止

二分法插入排序快速排序歸併排序堆排序的時間複雜度分別

二分法插入排序 複雜度 o nlogn 快速排序 o nlogn 有可能退化歸併排序 o nlogn 比較快堆排序 o nlogn 最穩定的 二分法插入排序 快速排序 歸併排序 堆排序 的時間複雜度分別是多少?二分法插入排序 複雜度 o nlogn 快速排序 o nlogn 有可能退化歸併排序 o ...

二分法查詢最壞情況下需要比較次數,為什麼n次和O(log

後者是演算法複雜度的意思 n次是正確的嗎?應該是log 2 n次才對啊 用二分法查詢最多log2 n 用順序查詢最多是n次 順序查詢需要比較n次,二分法查詢需要比較log n次 在最壞情況下,堆排需要進行比較的次數為nlog2n,為什麼是這樣啊,n是什麼含義,如果n為奇數不就 o n1og2n 在b...

關於二分法的小程式,大蝦幫幫忙,一個簡單的小程式 C語言 BF演算法

兩個錯誤。1 你把精確度設為1e 6。注意,float的有效數字只有6位,所以算到小數點後6位時,x1,x2,x的值很有可能就一樣了,那麼x,x1,x2的值將不將變化,而且肯定會大於1e 6,導致死迴圈。解決方法是把所有資料改成double型。2 仔細分析一下你的find函式吧,它求得的最後一個根區...