用binary_search進行二分法查詢(用法一)
方法:binary_search(陣列名+n1,陣列名+n2,值);
注:
1:n1和n2都是int型別的表示式,可以包含變數,如果n1=0,則+n1可以不寫查詢時的排序規則,必須和排序時的規則一致!查詢區間為下標範圍為[n1.n2)的元素,下標為n2的元素不在
在該區間內查詢"等於"值的元素,返回值為true(找到)或false(沒找到)
用binary_search進行二分查詢(用法二)
在用自定義排序好的,元素為任意的t型別的陣列中進行二分查詢
方法:binary_search(陣列名+n1,陣列名+n2,值,排序規則結構名());
n1和n2都是int型別的表示式,可以包含變數查詢時的排序規則,必須和排序時的規則一致如果n1=0,則+n1可以不寫
查詢區間為下標範圍[n1,n2)的元素,下表為n2的元素不在查詢區間內
在該區間內查詢等於值的元素,返回值為true(找到)或false(沒找到)
int
main()
;sort
(a,a+6)
;print
(a,6);
cout<<
"result"
<<
binary_search
(a,a+6,
12)
"result"
<<
binary_search
(a,a+6,
77)
(a,a+6,
rule()
);//按個位數從小到大
print
(a,6);
cout<<
"result"
<<
binary_search
(a,a_6,7)
"result"
<<
binary_search
(a,a+6,
8,rule()
)
}result:
1result:021
,12,3
,45,7
,98,result:
0result:
1//為什麼元資料中沒有8還返回了了1呢。因為是按照個位查詢的數
用lower_bound二分查詢下界(用法一)
在對元素型別為t的從小到大排好序的基本型別的陣列中進行查詢
方法:t*lower_bound(陣列名+n1,陣列名+n2,值);
返回乙個指標t*p;用lower_bound二分查詢下界(用法二)*p是查詢區間裡下標最小的,大於等於值的元素,如果找不到,p指向下表為n2的元素
在元素為任意的t型別,按照自定義排序規則排好序的陣列中進行查詢
方法:t*lower_bounde(陣列名+n1,陣列名+n2,值,排序規則結構名());
返回乙個指標t*p;用upper_bound二分查詢上界(用法一)*p是查詢區間裡下標最小的,按自定義排序規則,可以排在值後面的元素,如果找不到,p指向下標為n2的元素
在元素型別為t的從小到大排好序的基本型別的陣列中進行查詢
用法:t*upper_bound(陣列名+n1,陣列名+n2,值);
返回乙個指標t*p;用upper_bound二分查詢上界(用法二)*p是查詢區間下標最小的,大於"值的元素,如果找不到,p指向下標為n2的元素"
在元素型別為t,按照自定義排序規則的陣列中進行查詢
方法:t*upper_bound(陣列名+n1,陣列名+n2,值,排序規則結構名());
返回乙個指標t*p;*p是查詢區間下標最小的,按照自定義規則,必須排在值後面的元素,如果找不到,p指向下標為
n2的元素"
#include
#include
#include
using
namespace std;
struct rule};
void
print
(int a,
int size)
cout<}#define num 7;
intmain()
;sort
(a,a+num)
;print
(a,num)
;//=>3,5,5,7,12,21,98,
int*p=
lower_bound
(a,a+num,5)
;cout<<
*p<<
" ,"
5,1
p=upper_bound
(a,a+num,5)
;cout<<
*p7
cout<<
*upper_bound
(a,a+num,13)
21
sort
(a,a+num,
rule()
);//按照個位數排序了
print
(a,num)
;//=>21,12,3,5,5,7,98;
cout<<
*lower_bound
(a,a+num,
rule()
)7
cout<<
lower_bound
(a,a+num,25,
rule()
)-a3
cout<<
upper_bound
(a,a+num,18,
rule()
)-17if(
upper_bound
(a,a+num,18,
rule()
)==a+num)
cout<<
"not found"
not found
cout<<
*upper_bound
(a,a+num,5,
rule()
)7
cout<<
*upper_bound
(a,a+num,4,
rule()
)5
return0;
}
STL二分查詢法
用binary search進行二分查詢 用法一 查詢區間為下標範圍為 n1,n2 的元素,下標為n2的元素不在查詢區間內在該區間內查詢等於 值 的元素,返回值為true 找到 或者false 沒找到 等於的含義不是簡單的 真實含義是 a等於b a用binary search進行二分查詢 用法二 查...
二分查詢法(STL)詳解
二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。不妨設有序表是遞增有序的。查詢過程 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 ...
STL二分查詢演算法
主要是2個東西 lower bound和upper bound的用法 1 lower bound int p lower bound a,a n,x a 在已排陣列a中尋找x的位置易知其含義 是尋找大於或等於x的第乙個位置 int a 7 sort a,a 7 int p lower bound a...