所謂穩定排序,是指對乙個序列進行排序之後,如果兩個元素的值相等,則原來亂序時在前面的元素現在(排好序之後)仍然排在前面。stl中提供stable_sort()函式來讓我們進行穩定排序。為了更好的說明穩定排序的效果,我們定義了乙個結構體元素,乙個value成員和乙個index成員,前者表示元素的值,後者表示亂序時的索引。
stable_sort()內部由歸併排序來實現。
//coded by **瘋子程式的執行結果如下圖所示,可以看到,對於元素值相同的元素,索引小的在前面,穩定排序就是這麼乙個效果。//#include #include #include #include using namespace std;
typedef struct tagnode
node;
bool mycmp(const node& a, const node& b)
int main(int argc, char **argv)
stable_sort(coll.begin(), coll.end(), mycmp);
cout << "index\tvalue:" << endl;
vector::iterator pos;
for(pos = coll.begin(); pos != coll.end(); ++pos)
return 0;
}
本文出自
程式人生
>>
stl stable_sort 穩定排序
**瘋子
穩定排序和非穩定排序
首先,排序演算法的穩定性大家應該都知道,通俗地講就是能保證排序前2個相等的數其在序列的前後位置順序和排序後它們兩個的前後位置順序相同。在簡單形式化一下,如果ai aj,ai原來在位置前,排序後ai還是要在aj位置前。其次,說一下穩定性的好處。排序演算法如果是穩定的,那麼從乙個鍵上排序,然後再從另乙個...
排序 穩定排序和不穩定排序
這幾天筆試了好幾次了,連續碰到乙個關於常見排序演算法穩定性判別的問題,往往還是多選,對於我以及和我一樣拿不準的同學可不是乙個能輕易下結論的題目,當然如果你筆試之前已經記住了資料結構書上哪些是穩定的,哪些不是穩定的,做起來應該可以輕鬆搞定。本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者不穩...
穩定排序和不穩定排序
這幾天筆試了好幾 次了,連續碰到乙個關於常見排序演算法穩定性判別的問題,往往還是多選,對於我以及和我一樣拿不準的同學可不是乙個能輕易下結論的題目,當然如果你筆試之前 已經記住了資料結構書上哪些是穩定的,哪些不是穩定的,做起來應該可以輕鬆搞定。本文是針對老是記不住這個或者想真正明白到底為什麼是穩定或者...