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