折半查詢法(二分查詢法)

2021-10-08 21:15:15 字數 1026 閱讀 4640

一.舉例

二.演算法時間複雜度

假設一共有n個元素

第一次折半元素個數變為n/2;

第二次折半元素個數變為n/4;

第三次折半元素個數變為n/8;

。。。。。

第k次折半元素個數變為n/2^k;

。。。。。

假設k次找到,即為n/2^k=1;

k=log2(n);

三.函式實現

#define _crt_secure_no_warnings   1

#include

intbinsearch

(int a,

int x,

int n)

else

if(a[mid]

< x)

else}if

(low > high)

printf

("抱歉我沒有找到\n");

return-1

;//下標為-1表示沒有找到

}int

main()

;int x =0;

int n =0;

printf

("請輸入要在陣列中查詢的數:\n");

scanf

("%d"

,&x)

; n =

sizeof

(a)/

sizeof

(a[0])

;int index =0;

index =

binsearch

(a, x, n)

;printf

("下標為:%d\n"

, index)

;return0;

}

四.語句迴圈流程圖

二分查詢法(折半查詢法)

二分查詢法 說明 如果搜尋的數列已經有排序,應該盡量利用它們已排序的特性,以減少搜尋比對的次數 這是搜尋的基本原則,二分搜尋法是這個基本原則的代表。解法 在二分搜尋法中,從數列的中間開始搜尋,如果這個數小於我們所搜尋的數,由於數列已排序,則該數左邊的數一定都小於要搜尋 的物件,所以無需浪費時間在左邊...

二分查詢法 折半查詢法

二分查詢法 也稱折半查詢法,是一種效率較高的查詢方法,存在一定的侷限性。侷限性 適用於有序陣列 有序鍊錶等查詢,例如 array,list。基本原理 第一步 設定需要查詢的元素key,再設定low和high兩個臨時指標分別指向左邊第乙個元素和右邊最後乙個元素。第二步 因為資料是有序的,先根據low和...

二分查詢法(折半查詢法)

二分查詢用法 1 二分查詢要求 2 什麼時候使用二分查詢當在乙個有序list中,需要查詢乙個值,而這個值不確定在什麼位置時,使用該演算法可以通過極少的查詢次數得到結果 而使用簡單查詢,如果這個值在list的最後出現就需要查詢列表長度的次數才可以查到。也就是說,對於包含n個元素的列表,用二分查詢最多需...