STL 排序的相關函式

2021-08-03 20:31:41 字數 1356 閱讀 1107

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