1 - sort
這個就不用說了吧。最快的乙個,一般都用它。
2 - stable_sort
以前沒看到過?這個保證了排序前後相等元素之間的相對位置不發生改變。這對於內建型別的預設比較方式來說沒什麼用(相等就相等,改變了也沒用),但對於結構體,或者傳入了比較函式的就有用了,它保證了排序前後「相等」元素的相對位置的不發生改變。速度比sort慢,但時間複雜度相同。用法同sort。
3 - partial_sort
這個直譯為部分排序。它的原理是把所有元素放入乙個堆中,然後僅將前k個元素恢復到正常順序,後面的元素不保證有序。對於「取前x小的元素」的問題,這個函式或許要快些。第二個引數是最後乙個需要有序的元素的後乙個迭代器,相當於右區間。
4 - nth_element
原理就是快速選擇,時間複雜度為o(
n),選擇第x小的元素首選!它的第二個引數是儲存第x小的元素的迭代器,也就是相當於左區間。換句話說,從0開始計數的要-1。
3 4 的演示**
//使用stl的partial_sort和nth_element(前者慢,用於部分排序,不用於查詢第k小的元素,**中的是誤用)
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
std::cin;
using
std::cout;
using
std::endl;
typedef
long
long ll;
inline
int readin()
return a;
}const
int maxn = 10000000;
int a[maxn];
ll randex()
int findkth_heap(int k)
int findkth_quick(int k)
int main()
for (int i = 0; i < maxn; i++)
for (int i = 0; i < maxn / 10000; i++)
puts("");
int n = readin();
printf("%d\n", findkth_quick(n));
return
0;}
stl常用演算法 排序相關
傳智掃地僧課程學習筆記。看老師課上示例 即可,void main merge class student void printt public string m name int m id bool compares student s1,student s2 void main sort sort...
STL之string的相關函式
用 stl進行字串的分割 涉及到string類的兩個函式find和substr 1 find函式 原型 size t find const string str,size t pos 0 const 功能 查詢子字串第一次出現的位置。引數說明 str為子字串,pos為初始查詢位置。返回值 找到的話返...
STL相關函式的使用分析
2月21日任務 includeusing namespace std include 向量 include 迭代器 include 演算法 include 函式 stl三大元件 容器,演算法,迭代器 void main vectora ar,ar 8 a.push back 1 a.push bac...