二分法查詢為什麼只適用於順序儲存

時間 2021-07-12 17:41:31

1樓:匿名使用者

舉個例子,在1 2 6 4 5 7 8 9 10中,你要用二分法查詢6,你得先把6跟中間的5比較,6很明顯大於5,所以就只能在5 7 8 9 10中查詢,這樣很明顯找不到,所以二分法必須要求用於順序排列的數,如果不是順序排列的,二分法就完全沒有意義

2樓:匿名使用者

二分法查詢的時候如果不是按照順序排的話,那麼跟直接乙個乙個查詢是一樣的,演算法複雜度是o(n),如果是順序儲存的話就是o[log(n)]

3樓:匿名使用者

你先理解什麼是二分查詢,再仔細看一遍嘛。

它是直接比較中間那個數,再根據比較結果來判斷要找的數在此數前面還是後面,如果不是順序儲存的,那你怎麼能判斷出來呢。

4樓:葉小憐

誰說只能用於順序儲存的,鏈式儲存也可以,你看一下關於二分法的演算法描述中,什麼地方提到了只能用順序儲存。

演算法與其具體實現,是不相干的。只能說某些演算法,用某些實現方式更為方便一些。

5樓:小菊阪胡蝶

如果鏈式儲存也可以通過索引訪問的話,以上結論推翻。。

6樓:abc雪人心語

二分法查詢的儲存結構僅限於___順序儲存結構____且是有序的。

解析:二分查詢,也稱折半查詢,它是一種高效率的查詢方法。但二分查詢有條件限制:要求表必須用順序儲存結構,且表中元素必須按關鍵字有序(公升序或降序均可)。

二分法查詢適用於何種儲存方式的有序表?

7樓:匿名使用者

二分法查詢是一種效率比較高的查詢方法,在進行二分法查詢時,線性表節點必須按關鍵碼值排序,且 線性表是以順序儲存方式儲存的。

二分法查詢的優點是比較次數少,查詢速度快,平均檢索長度小,經過{_loge n次比較就可以完成查詢過程。缺點是在查詢之前要為建立有序表付出代價,同時對有序表的插人和刪除都需要平均比較和移動表中 的一半元素。一般情況下,二分查詢適應於資料相對固定的情況,且二分法查詢只適用於線性表的順序儲存。

二分法查詢的適用條件

8樓:宛丘山人

說」二復分查詢法只適用於順制序儲存的有序表「是正確的,說」指

線性表中的元素按值非遞減排列(即從小到大,但允許相鄰元素值相等)「是為了程式的確定性。

實際上只要有序就可以。按遞減排序也可以用二分法。只是必須把演算法規則改變一下。

遞增的演算法:拿要查詢數值與中間序號的數值比較若相等,查詢成功;要查詢數值比中間序號的數值大,在右邊查詢,低端序號改為原中間序號加1;要查詢數值比中間序號的數值小,在左邊查詢,高階序號改為原中間序號減1;如此反覆。

遞減的演算法:拿要查詢數值與中間序號的數值比較若相等,查詢成功;要查詢數值比中間序號的數值大,在左邊查詢,高階序號改為原中間序號減1;要查詢數值比中間序號的數值小,在右邊查詢,低端序號改為原中間序號加1;如此反覆。

9樓:匿名使用者

每個值有效,並且有序。

遞減是可以的。

C語言二分法程式設計問題,C語言程式設計二分法

二分法插入排序的演算法源程式 include define maxnum 100 typedef int keytype typedef int datatype typedef struct recordnode typedef struct for j i 1 j left j data j 1...

用二分法求方程的近似解,c語言二分法求方程的近似解

qq296127621,你好.二分法的基本原理是連續函式的零點定理,表述及證明如下.設函式f x 在閉區間 a,b 上連續,且f a 與f b 異號 即f a f b 0 那麼在開區間 a,b 內至少有函式f x 的乙個零點,即至少有一點 a 0.令e 由f a 0知e 且b為e的乙個上界,於是根據...

c語言二分法怎么用,求例子,c語言二分法怎麼用,求例子!!

首先二分法必須讓數列有序,比如說我要在 1 2 3 4 5 6 7 8 9 10中找到5.include int main scanf d k while high low if sign 0 printf no return 0 二分法查詢還是二分法求方程式解 include include fl...