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...