sort(first_pointer,first_pointer+n,cmp)
該函式可以給陣列,或者鍊錶list、向量排序。
實現原理:sort並不是簡單的快速排序,它對普通的快速排序進行了優化,此外,它還結合了插入排序和推排序。系統會根據你的資料形式和資料量自動選擇合適的排序方法,這並不是說它每次排序只選擇一種方法,它是在一次完整排序中不同的情況選用不同方法,比如給乙個資料量較大的陣列排序,開始採用快速排序,分段遞迴,分段之後每一段的資料量達到乙個較小值後它就不繼續往下遞迴,而是選擇插入排序,如果遞迴的太深,他會選擇推排序。
此函式有3個引數:
引數3:預設可以不填,如果不填sort會預設按陣列公升序排序。也就是1,2,3,4排序。也可以自定義乙個排序函式,改排序方式為降序什麼的,也就是4,3,2,1這樣。
使用此函式需先包含:
#include
並且匯出命名空間:
using namespace std;
簡單例子:對陣列a的0~n-1元素進行公升序排序,只要寫sort(a,a+n)即可;對於向量v也一樣,sort(v.begin(),v.end())即可。
自己編寫排序規則函式
例如:bool compare(int a,int b)
sort擴充套件
sort不只是能像上面那樣簡單的使用,我們可以對sort進行擴充套件,關鍵就在於第三個引數方法一:定義比較函式(最常用)
//情況一:陣列排列
int a[100];
bool cmp1(int a,int b)//int為陣列資料型別
else
}sort
(envelopes.
begin()
,envelopes.
end(
),compare1)
;方法二:使用標準庫函式
另外,其實我們還可以再懶一點,在標準庫中已經有現成的。它在哪呢?答案是functional,我們include進來試試看。functional提供了一堆基於模板的比較函式物件,它們是:equal_to、not_equal_to、greater、greater_equal、less、less_equal。這些東西的用法看名字就知道了。在這裡,我麼sort要用到的也只是greater和less就足夠了,用法如下:
● 公升序:sort(begin,end,less())
● 降序:sort(begin,end,greater())
缺點:也只是實現簡單的排序,結構體不適用。
#include
#include
#include
#include
using namespace std;
//簡單使用方法
sort(a,a+100,greater());//降序排列
sort(a,a+100,less());//公升序排列
方法三:過載結構體或類的比較運算子
//情況一:在結構體內部過載
typedef struct student
參考文獻:
參考文獻:
參考文獻:
C 中的sort 排序函式用法
原文章 中的sort 排序函式用法m p 10183210.html sort first pointer,first pointer n,cmp 該函式可以給陣列,或者鍊錶list 向量排序。實現原理 sort並不是簡單的快速排序,它對普通的快速排序進行了優化,此外,它還結合了插入排序和推排序。系...
C 中的sort 排序函式用法
sort first pointer,first pointer n,cmp 該函式可以給陣列,或者鍊錶list 向量排序。實現原理 sort並不是簡單的快速排序,它對普通的快速排序進行了優化,此外,它還結合了插入排序和推排序。系統會根據你的資料形式和資料量自動選擇合適的排序方法,這並不是說它每次排...
C 中sort排序函式的原理用法
sort函式可以用來給指定區間內的資料按照某種規則排序,在這裡貼一下sort函式的 templateinline void sort ranit first,ranit last,pr pred 能夠看出該函式是經過多層呼叫的,再深層次就不貼了大家可以開啟 庫看。使用時預設情況下是兩個引數,例如 v...