二分查詢法:對乙個有序序列進行一分為二的檢索,每次查詢範圍縮小一半,直到找到所需的數或者查詢範圍不存在;
問題描述:對乙個有序序列檢索乙個輸入的數,若該數存在則返回下標,否則返回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 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...