二分法與二叉查詢樹

2021-10-06 12:23:44 字數 1610 閱讀 2606

二分查詢法:對乙個有序序列進行一分為二的檢索,每次查詢範圍縮小一半,直到找到所需的數或者查詢範圍不存在;

問題描述:對乙個有序序列檢索乙個輸入的數,若該數存在則返回下標,否則返回1;

問題分析:這種問題最簡單的方法是順序檢索,在資料量小的情況下,順序和二分還有二叉查詢樹沒有很大差別(此時是單邊樹),但在資料量大的情況下,對有序表的檢索二分較優。

這裡用二叉查詢樹只是因為想複習一下資料結構學過的知識。

時間複雜度:log(n)

演算法設計:

//

// binary_search.cpp

////

// created by yizhihenpidehou on 2020/3/10.

//#include

#include

#include

#include

using namespace std;

const

int maxen=

500;

intbinary_search

(int

*num,

int search_num,

int len)

else

if(num[mid]

else

}return0;

}int

main()

int search_num;

scanf

("%d"

,&search_num)

; j=

binary_search

(num,search_num,n)

;printf

("%d\n"

,j);

return0;

}

2:二叉查詢樹(bst)

演算法時間複雜度:在單支樹的情況下是o(n),在分布均勻的情況下是o(logn)

演算法設計

//

// binary_search.cpp

//

//// created by yizhihenpidehou on 2020/3/10.

//#include

#include

#include

#include

using namespace std;

const

int maxen=

500;

intbinary_search

(int

*num,

int search_num,

int len)

else

if(num[mid]

else

}return j;

}int

main()

int search_num;

scanf

("%d"

,&search_num)

; j=

binary_search

(num,search_num,n)

;printf

("%d\n"

,j);

return0;

}

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法查詢

前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...