STL之排序演算法

2021-08-27 02:49:57 字數 3616 閱讀 8884

sorting

sort

sort elements in range (function template)

stable_sort

sort elements preserving order of equivalents (function template )

partial_sort

partially sort elements in range (function template)

partial_sort_copy

copy and partially sort range (function template)

nth_element

sort element in range (function template)

其中sort,和stable_sort在我的多篇部落格出現過,在此不再累贅,想複習sort和stable_sort的朋友,可以翻看我的部落格

1partial_sort

template void partial_sort ( randomaccessiterator first, randomaccessiterator middle,

randomaccessiterator last );

template void partial_sort ( randomaccessiterator first, randomaccessiterator middle,

randomaccessiterator last, compare comp );

以上是它的函式原型,它是根據你給的中間位址,然後部分排序,比如你給的位址是 v.begin(),v.begin()+5,v.end(),其中v的大小是10那麼結果就是前面五個排序了,後面五個按照原來的順序,看**

#include#include#include#include#includeusing namespace std;

int main();

vectorv(a,a+10);

partial_sort(v.begin(),v.begin()+5,v.end());

for(vector::iterator itera=v.begin();itera!=v.end();++itera)

cout<

#include#include#include#include#includeusing namespace std;

bool isbigger(int a,int b)

int main();

vectorv(a,a+10);

partial_sort(v.begin(),v.begin()+5,v.end(),isbigger);

for(vector::iterator itera=v.begin();itera!=v.end();++itera)

cout<

**簡單,不必解釋了吧。

2partial_sort_copy,

函式原型如下:

template randomaccessiterator

partial_sort_copy ( inputiterator first,inputiterator last,

randomaccessiterator result_first,

randomaccessiterator result_last );

template randomaccessiterator

partial_sort_copy ( inputiterator first,inputiterator last,

randomaccessiterator result_first,

randomaccessiterator result_last, compare comp );

其實它就相當於sort()和copy的結合,所謂的partial沒有給定範圍,實際上用的比較多的,還是begin--->end

看**:

#include#include#include#include#includeusing namespace std;

int main();

vectorv(a,a+10);

vectorvv(10);

partial_sort_copy(v.begin(),v.end(),vv.begin(),vv.end());

for(vector::iterator itera=vv.begin(); itera!=vv.end();++itera)

cout<

#include#include#include#include#includeusing namespace std;

bool isbigger(int a,int b)

int main();

vectorv(a,a+10);

vectorvv(10);

partial_sort_copy(v.begin(),v.end(),vv.begin(),vv.end(),isbigger);

for(vector::iterator itera=vv.begin(); itera!=vv.end();++itera)

cout<

3nth_element,

stl中的nth_element()方法的使用通過呼叫nth_element(start, start+n, end) 方法可以使第n大元素處於第n位置(從0開始,其位置是下標為 n的元素),並且比這個元素小的元素都排在這個元素之前,比這個元素大的元素都排在這個元素之後,但不能保證他們是有序的

其函式原型如下:

template void nth_element ( randomaccessiterator first, randomaccessiterator nth,

randomaccessiterator last );

template void nth_element ( randomaccessiterator first, randomaccessiterator nth,

randomaccessiterator last, compare comp );

看下**:

#include#include#include#include#includeusing namespace std;

int main();

vectorv(a,a+10);

for(vector::iterator itera=v.begin();itera!=v.end();++itera)

cout<::iterator iterb=v.begin();iterb!=v.end();++iterb)

cout<

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之演算法

演算法是指解決問題的方 而完整的描述,對於規範的輸入,在有限時間內要獲得所需要的輸出。不同的演算法可能使用不同的時間 空間或效率完成同樣的任務。想要評估乙個演算法的好壞,目前可以通過時間複雜度和空間複雜度來進行衡量。時間複雜度,是指演算法執行指令所需的計算量。演算法的執行時間和其所要處理的資料之間存...