c 中sort和stable sort怎麼用

2021-10-03 03:22:36 字數 980 閱讀 9046

sort 函式是c++自帶的排序函式,期望時間複雜度是 o(nlogn),其中 n 是待排序的元素個數

要在標頭檔案中加上 "#include"

sort 的使用方法也很簡單,如果將乙個區間要從小到大排:

sort 的前兩個引數是起始位址和中止位址

如:sort(a,a+n) 表示對 a[0] ... a[n-1] 排序

sort(區間首指標(或迭代器),區間尾指標(或迭代器));

注意這裡的區間是左閉右開的,即排序的時候不會包含尾指標儲存的元素

如圖,這裡的「a」,「a+10」就是指標

如果我們要從大到小排序,或者更複雜,需要寫乙個 cmp 函式即可

sort(首,尾,cmp)            cmp可以用它改變排序的規則      cmp 是個bool型別的函式

bool cmp(int a,int b)
這個就是降序排序的比較函式,意思是:a > b 時為true,就不交換,a < b 時為 false,交換

還可以呼叫 greater 和 less 進行公升/降序排序,其實就是乙個幫你寫好的函式

sort(a+1,a+n+1,greater()); //公升序

sort(a+1,a+n+1,less()); //降序,尖括號內寫的是排序的陣列型別

sort(快速排序) 是不穩定排序,它會改變兩個關鍵字相同的元素的相對順序比如 1 1 1 1 sort 之後的 「1 1 1 1」這裡面的「1」有可能就不是原來的「1」,這會增加 sort 的時間複雜度,有可能會被卡成 o(n²)

就需要「stable_sort」穩定的快速排序了,使用方法和 sort 一模一樣,只不過這個函式是「stable」(穩定的)

C STL中sort和C中qsort比較

c stl中sort用法 include 一 sort begin,end,method sort 目前採用的是加強版的快速排序,是結合內插排序的快速排序 目的在於克服快速排序在最初情況 元素基本有序 的效率底下。1.sort中method 預設用法 從小到大排序 int a 陣列 sort a,a...

c 中sort和qsort的比較

例如 int cmp const void a,const void b int a 5 qsort a,5,sizeof int cmp void sort 待排序陣列首位址,待排序陣列結束位址,排序的方法 其中,排序的方法可以不寫,這樣預設為從小到大。例如 從小到大 bool cmp const...

關於c 中vector和set使用sort方法

1.vector,set,map這些容器的end 取出來的值實際上並不是最後乙個值,而end的前乙個才是最後乙個值!需要用prev end 才能取出容器中最後乙個元素。2.對vector使用sort函式 第一種情形 基本型別,如vector,vector,vector也是可以的 cout a.end...