stl提供在排好序的陣列上進行二分查詢的演算法
binary_search lower_bound upper_bound
(1)在從小到大排好序的基本型別陣列上進行二分查詢
binary_search(陣列名+n1,陣列名+n2,值); 下標為n2的元素不在查詢區間內 在該區間內查詢"等於"值」的元素,返回值為true(找到)或false(沒找到)
在用自定義排序規則排好序的、元素為任意的t型別的陣列中進行二分查詢
binary_search(陣列名+n1,陣列名+n2,值,排序規則結構名());
(2)在對元素型別為t的從小到大排好序的基本型別的陣列中進行查詢
t * lower_bound(陣列名+n1,陣列名+n2,值);返回值是指標*p,
*p 是查詢區間裡下標最小的,
大於等於"值"的元素。如果找不到,p指向下標為n2的 元素
(3)在元素型別為t的從小到大排好序的基本型別的陣列中進行查詢
t * upper_bound(陣列名+n1,陣列名+n2,值);
返回乙個指標 t * p;
*p 是查詢區間裡下標最小的,大於"值"的元素。如果找不到,p指向下標為n2的元素
#include
#include
#include
using namespace std;
int main();
sort(a,a+5);
printf("result:%d\n",binary_search(a,a+5,4));//返回值為0或1,1
printf("result:%d\n",*lower_bound(a,a+5,6));//大於等於6的下標最小的元素,6
printf("result:%d\n",*upper_bound(a,a+5,6));//大於6的下標最小的元素,9
}
MySQL之集合之間的查詢
根據需求有以下查詢情況 判斷乙個元素是否在集合裡面。可用 in 判斷,要求傳入引數為集合,然後通過 collection list item i index index open close separator foreach 對集合進行整理。另乙個方法是使用 find in set 函式,這個要求...
把乙個整數按大小順序插入已排好序的陣列中。
為了把乙個數按大小插入已排好序的陣列中,應首先確定排序是從大到小還是從小到大進行的。設排序是從大到小進序的,則可把欲插入的數與陣列中各數逐個比較,當找到第乙個比插入數小的元素 i 時,該元素之前即為插入位置。然後從陣列最後乙個元素開始到該元素為止,逐個後移乙個單元。最後把插入數賦予元素 i 即可。i...
合併兩個排好序的鍊錶
typedef struct nodetag node typedef node pnode node combine node p1,node p2 while p1 null p2 null p1 valval p next p2 return head node build int a,int...