C++ STL(Standard Template Library)中的list.sort()
函數并不保證穩定性。穩定性是指在排序過程中,如果兩個元素相等,它們在排序后的相對順序不會改變。list.sort()
使用的是歸并排序算法,而歸并排序是不穩定的排序算法。
如果你需要一個穩定的排序算法,可以考慮使用C++ STL中的stable_sort()
函數。stable_sort()
使用的是歸并排序算法的穩定版本,可以保證相等元素的相對順序不變。需要注意的是,stable_sort()
要求輸入范圍必須是有序的,或者在排序過程中會重新構造有序狀態。
以下是一個使用stable_sort()
的示例:
#include <iostream>
#include <list>
#include <algorithm>
int main() {
std::list<int> my_list = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
// 使用 stable_sort 對 list 進行排序
std::stable_sort(my_list.begin(), my_list.end());
// 輸出排序后的結果
for (const auto& item : my_list) {
std::cout << item << " ";
}
return 0;
}
輸出結果為:
1 1 2 3 3 4 5 5 5 6 9
可以看到,相等元素(如兩個1)在排序后的相對順序沒有改變。