這些演算法都需要隨機訪問迭代器的支援,所以不支援list。
pred 引數:
預設排序準則為 operator1. nth_element
排序後,nth之前的元素不比nth所指元素大,nth之後的元素不比nth所指元素小。templatevoid nth_element(ranit first, ranit nth, ranit last);
templatevoid nth_element(ranit first, ranit nth, ranit last,
pr pred);
測試例程(其他函式測試程式類似):
#include #include #include #include using namespace std;
void print(int i)
int main()
2. sort
採用quick sort 演算法templatevoid sort(ranit first, ranit last);
templatevoid sort(ranit first, ranit last, pr pred);
3. partial_sort
採用 heap sort 演算法templatevoid partial_sort(ranit first, ranit mid,
ranit last);
templatevoid partial_sort(ranit first, ranit mid,
ranit last, pr pred);
排序完 [firtst, mid) 區間內的元素
4. stable_sort
採用 merge sort,保持相等的元素之間的相對次序。templatevoid stable_sort(bidit first, bidit last);
templatevoid stable_sort(bidit first, bidit last, pr pred);
n*log(n)*log(n) 時間複雜度
對所有元素進行排序
5. partition
返回bitit型別指標(命名為pit),[pit, last)不滿足pred。templatebidit partition(bidit first, bidit last, pr 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 ...