STL初步 排序與檢索

2021-07-29 08:54:38 字數 1024 閱讀 9545

e.g. 現有n個大理石,每個大理石上寫了乙個非負整數。首先把每個數從小到大排序,然後回答q個問題。每個問題問是否有乙個大理石寫著某個整數x。如果是,要回答在哪個大理石上寫著x。排序後的大理石從左到右編號為1~n。

solution:先排序,後查詢

關於排序

sort使用陣列元素預設的大小比較運算子進行排序,可以對任意物件進行排序,不一定是內建型別,如果希望用sort排序,這個型別需要定義「小於」運算子,或者是在排序時傳入乙個「小於」函式。

int a[n];

排序物件可以存在於普通陣列裡,sort(a,a+n);

也可以存在於vector中,sort(v.begin(),v.end());

用sort進行排序之後,可以使用low_bound(a, a+n, x),查詢大於或等於x的第乙個位置。

int p=low_bound(a, a+n, x)-a

;//在已排序陣列中尋找x

if(a[p]==x)

....

還有乙個unique函式可以刪除有序陣列中的重複元素,對有序的容器重新排列,將第一次出現的元素從前往後排,其他重複出現的元素依次排在後面,返回迭代器,迭代器指向的是重複元素的首位址。

int a[14]=

int result=unique(a,a+14)-a

;//result的返回值是7

sort 和 low_bound 的定義在標頭檔案#include

例題解法:

#include

#include

using namespace std;

const int maxn=10000;

int main()

}return

0;}

STL 排序與檢索

新增在標頭檔案algorithm中,使用方法如 sort start,end 排序方法 int a 5 sort a,a 5 這是最簡單的sort方法,使用預設的排序方法公升序排列 sort a,a 5,cmp cmp為bool函式名,是自定義規則比較函式 自定義的cmp函式 bool cmp in...

程式設計與演算法 演算法 STL初步

標頭檔案 sortsort 陣列名 n,陣列名 m 能,m為整數 適用於基本型別 範圍為下標n到m 1,下標m不參與排序 自定義排序 struct rule sort a,a sizeof a rule 二分查詢 在排好序的陣列上進行二分查詢 等於的含義 a等於b 等價於a b 和a增,刪,查都能在...

c 排序與檢索函式

問題描述 現有n個大理石,每個大理石上寫了乙個非負整數 首先把各數從小到大排序 然後回答q個問題。每個問題問是否有乙個大理石寫著某個整數x,如果是,還要回答哪個大理石上寫著x。排序後的大理石從左到右編號為1 n。輸入大理石數量和需要回答問題數量,然後輸入大理石上的每個非負整數,接著輸入x 樣例輸入 ...