演算法分析 二分檢索演算法

2021-10-04 11:01:08 字數 1203 閱讀 4318

**實現

實現方法

二分檢索演算法又稱為折半檢索演算法,屬於非常基礎簡單的演算法,其檢索基於比較,通過比較來檢索目標。

有序表中元素是按公升序排列,將表中間位置記錄的關鍵字與檢索關鍵字比較,如果兩者相等,則檢索成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於檢索關鍵字,則進一步檢索前一子表,否則進一步檢索後一子表。重複以上過程,直到找到滿足條件的記錄,使檢索成功,或直到子表不存在為止,此時檢索不成功。

比較次數少,檢索速度快,平均效能好

任何一種以比較為基礎的演算法,其最壞情況下的計算時間都不可能低於o(logn),也就是不可能存在其最壞情況下計算時間比二分檢索演算法的計算時間量級還低的演算法

要求待查表為有序表,且插入刪除困難。

/*

編譯器:dev-c++

二分檢索演算法

空間複雜度:n+5(n個陣列元素,5個變數)

時間複雜度:o(logn)

採用迭代得思想

輸出大小: 1.83369064331055 mib

*/

#include

#include

#include

using

namespace std;

void

random

(int a,

int n)

//生成隨機數組並排序

//氣泡排序

int k;

while

(bound !=0)

} bound = i;

}return;}

void

print

(int a,

int n)

//列印陣列

cout

intbinsrch

(int a,

int n,

int key)

else

if(key > a[mid]

)else

if(key == a[mid]

)else

}return-1

;}intmain

(int argc,

char

**ar**)

以上是以迭代的方法實現的二分檢索,還可以使用遞迴對二分檢索進行實現,但是遞迴對於空間的占用會很大

演算法 二分檢索總結

演算法正確性證明 檢驗到引數的每類取值 檢驗演算法的每個分支 演算法所需空間 對於含有n個內節點的二元樹,證明e 2n 1。其中e,i分別為外部和內部路徑長度。當n 1時,e 2,i 0,所以e n i n 2n成立 不妨假設 e k i k 2k成立 當n k 1時,不妨對二元樹中h級的葉子節點x...

檢索演算法之二分查詢

二分查詢演算法類似我們日常生活中常見的猜數字的遊戲。假設給定從1 100這個排好序的陣列,而猜數字的人只知道這個範圍,你拿著一塊寫有數字的題板背對著他,讓他猜你手裡拿的的數字。估計有經驗的人會先猜50,然後你說偏大了,偏小了,還是相等。如果偏大了或者是偏小了,他會用同樣的方式在偏大或者偏小的陣列中從...

檢索演算法 順序查詢和二分查詢

分析原始碼 使用兩種檢索演算法求解有序陣列中某元素的所在位置。有序陣列最基本檢索演算法是順序查詢,又稱線性查詢,其思想是從資料結構線性表的一段開始順序掃瞄,依次將掃瞄到的元素和給定值x相比較,若找到相等值則表示查詢成功,若掃瞄結束仍未找到與給定值相等的元素,則表示線性表中不存在給定值。有序陣列的另一...