STL 演算法 筆記 排序演算法

2021-05-28 07:17:34 字數 1489 閱讀 4921

這些演算法都需要隨機訪問迭代器的支援,所以不支援list。

pred 引數:

預設排序準則為 operator

1. nth_element

templatevoid nth_element(ranit first, ranit nth, ranit last);

templatevoid nth_element(ranit first, ranit nth, ranit last,

pr pred);

排序後,nth之前的元素不比nth所指元素大,nth之後的元素不比nth所指元素小。

測試例程(其他函式測試程式類似):

#include #include #include #include using namespace std;

void print(int i)

int main()

2. sort

templatevoid sort(ranit first, ranit last);

templatevoid sort(ranit first, ranit last, pr pred);

採用quick sort 演算法

3. partial_sort

templatevoid partial_sort(ranit first, ranit mid,

ranit last);

templatevoid partial_sort(ranit first, ranit mid,

ranit last, pr pred);

採用 heap sort 演算法

排序完 [firtst, mid) 區間內的元素

4. stable_sort

templatevoid stable_sort(bidit first, bidit last);

templatevoid stable_sort(bidit first, bidit last, pr pred);

採用 merge sort,保持相等的元素之間的相對次序。

n*log(n)*log(n) 時間複雜度

對所有元素進行排序

5. partition

templatebidit partition(bidit first, bidit last, pr pred);
返回bitit型別指標(命名為pit),[pit, last)不滿足pred。

pre:設定為bind2nd(less(), 50),結果如下:

6. stable_partition

保證 [first, pit) 和 [pit, last) 兩區間內元素的相對次序保持不變

STL之排序演算法

1.merge 以下是排序和通用演算法 提供元素排序策略 merge 合併兩個有序序列,存放到另乙個序列。例如 vecinta,vecintb,vecintc是用vector宣告的容器,vecinta已包含1,3,5,7,9元素,vecintb已包含2,4,6,8元素 vecintc.resize ...

STL之排序演算法

以下是排序和通用演算法 提供元素排序策略 merge 合併兩個有序序列,存放到另乙個序列。例如 vecinta,vecintb,vecintc是用vector宣告的容器,vecinta已包含1,3,5,7,9元素,vecintb已包含2,4,6,8元 vecintc.resize 9 擴大容量 me...

STL(排序演算法sort)

標頭檔案 include 1.對基本型別的陣列從小到大排序 sort 陣列名 n1,陣列名 n2 n1和n2都是int型別的表示式,可以包含變數 如果n1 0,則 n1可以不寫 將陣列中下標範圍為 n1,n2 的元素從小到大排序 如 int a sort a,a 7 對整個陣列從小到大排序 int ...