STL(已排好序的集合之間的查詢)

2021-08-22 05:55:14 字數 952 閱讀 8705

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...