c++stl
也提供了排序演算法
(sorting algorithms),
排序就是將一組無序的序列變成有序的序列.
首先介紹一下關於堆排序的內容
,下面就是關於堆排序的一些演算法函式
push_heap
元素入堆
,就是將乙個元素置入已構成的堆的迭代器區間中
,使得擴充套件的乙個元素的區間元素仍構成堆
.(會改變迭代器區間元素順序)
make_heap
重新排列元素順序
,使得他們在邏輯上構成乙個堆.
pop_heap
相對於push_heap,
實際上就是元素出堆操作
sort_heap
利用堆進行排序
is_heap
判斷迭代器區間是否構成乙個堆
partial_sort
堆部分函式進行排序
,內部也是使用堆排序
.(給定乙個迭代器區間和區間內的乙個元素
,對該元素前面的區間排序,)
partial_sort_copy
類似於partial_sort,
只是它是將結果放置到另乙個區間範圍中.
----
不過一定程度上堆排序的速度並不算快.
sort
是stl
當中比較常用的乙個排序演算法
,較之堆排序和標準c的
qsort
演算法都要快.
下面的**展示了如何使用
sort
實現序列的公升降序排列
#include
#include
using namespace std;
void print(int x)
int main(void);
const int len=sizeof(iarray)/sizeof(int);
//cout << "
公升序排序
" << endl;
sort(iarray, iarray+len);
for_each(iarray, iarray+len, print);
cout << endl;
//cout << "
降序排序
" << endl;
sort(iarray, iarray+len, greater());
for_each(iarray, iarray+len, print);
cout << endl;
return 0;
}merge
將兩個相同公升降序的序列合併成乙個有序的序列
inplace_merge
類似於merge,
用於將乙個序列內部兩個相同公升降序的子串行進行排序合併
stable_sort
類似於sort,
不過該演算法可以保持等價元素的相對順序穩定不變
下面的**展示了在對於結構體排序的實用性:
#include
#include
#include
using namespace std;
struct student
};bool compbyscore(student s1, student s2)
void print(student s)
int main(void)
is_sorted
判斷迭代器區間內的元素是否排序
nth_element
僅排序第
nth個元素
,就是使得該元素前面的元素小於等於
(或者大於等於
)該元素
,後面的元素大於等於
(或者小於等於該元素)
如果不理解的話
,就參考下面**:
#include
#include
using namespace std;
void print(int x)
int main(void);
const int len=sizeof(iarray)/sizeof(int);
//for_each(iarray, iarray + len, print);
cout << endl;
//cout << "after nth_element 9th:\n";
nth_element(iarray, iarray + 9, iarray + len);
for_each(iarray, iarray + len, print);
cout << endl;
return 0;
}lower_bound
查詢有序區間中首個不小於指定值的元素.
upper_bound
對應於lower_bound,
查詢有序區間中首個不大於指定值的元素.
Hash演算法小談
hash演算法小談 一 初識hash 一直都只知道hash是一種演算法,但是具體是什麼一直都是模糊的概念。之前知道object類中有hashcode 方法,此方法返回該物件的雜湊碼值。而雜湊碼值物件的記憶體位址。hash其實就是一種儲存資料的結構,一般來說我們所了解熟 悉的結構有 陣列 鍊錶 佇列 ...
演算法小談 遞迴
基本概念 乙個函式呼叫它自身,就是遞迴 如求n的階乘的遞迴 includeusing namespace std int factorial int n int main 這裡在求n的階乘時,我們就用到遞迴的概念。假如n 3,那麼函式首先呼叫factorial 3 將函式呼叫壓入棧,繼續呼叫fact...
Notes 排序演算法小結 Sorting
最近兩天,複習了幾個經典的排序演算法。在這裡,寫乙份小結,粗略回顧。1 bubble sort 顧名思義,就是把最小的數如冒泡一樣,在每次的遍歷當中,移到最頂的位置。public void bubblesort int input swap input,i,min index 分析該排序演算法,比較...