C 面試題 STL中的sort排序是穩定排序嗎?

2021-09-26 13:25:30 字數 934 閱讀 2671

前言:

最近看到乙個c++的面試題,問道stl中的sort排序是否是穩定排序?

回答:

sort()排序當然不是穩定排序,sort是主要用到了快速排序(平均時間複雜度為o(nlogn)),還結合了插入排序(時間複雜度為o(n2))和堆排序(時間複雜度為o(nlogn))。

注:關於sort的理解最好的方式就是看原始碼和看書

補充:

stl中的排序演算法如下:

effective stl對如何選擇排序函式總結的很好:

1)若需對vector, string, deque, 或array容器進行全排序,你可選擇sort或stable_sort;

2)若只需對vector, string, deque, 或array容器中取得top n的元素,部分排序partial_sort是首選.

3)若對於vector, string, deque, 或array容器,你需要找到第n個位置的元素或者你需要得到top n且不關係top n中的內部 順序,nth_element是最 理想的;

4)若你需要從標準序列容器或者array中把滿足某個條件 或者不滿足某個條件的元素分開,你最好使用partition或stable_partition;

5)若使用的list容器,你可以直接使用partition和stable_partition演算法,你可以使用list::sort代替sort和stable_sort排序。

STL高頻面試題

vector的內部是使用動態陣列的方式來實現的,如果動態陣列的內部實現不夠用,就要動態的重新分配記憶體。然後把原陣列的內容拷貝過去。vector和陣列類似,擁有連續的記憶體空間,支援隨機的訪問,在中間進行元素的插入和刪除的操作時間複雜度是o n list是由雙向鍊錶實現的,只能通過陣列指標來進行資料...

STL常見面試題

紅黑樹的特性與其在c stl中的應用 map set multiset multimap的底層實現都是紅黑樹,epoll模型的底層資料結構也是紅黑樹,linux系統中cfs程序排程演算法,也用到紅黑樹。紅黑樹的特性 根節點是黑色 不能有兩個連續的紅節點 空指標是黑色 從任意乙個結點出發,到後代中空指...

的面試題 C語言面試題總結

下面是我在軟通動力的一些面試題,雖然有些模糊了,但是都還是在面試中經常會看到的一些題,而且通過我面試的這些題,也總結了一些面試經驗,這些都是面試時你必須要做好的。首先看面試題吧。1,寫乙個單鏈表,儲存1,2,3,然後寫乙個函式讓其記憶體反轉,3,2,1。2,忘了 3,c字串,this is a te...