C ++ sort()與stable_sort()
(2012-04-03 10:07:30)這兩個函數的原理都是快速排序,時間複雜度在所有排序中最低,爲O(nlog2n) ;
sort的應用;
1、可以傳入兩個參數;
sort(a,a+N) ,其中a是數組,a+N表示對a[0]至a[N-1]的N個數進行排序(默認從小到大排序);
2、傳入三個參數;
sort(a,a+N,cmp),第三個參數是一個函數 ;
如果讓函數從大到小排序,可以用如下算法實現;
bool cmp(int a,int b){return a>b};
sort(A,A+N,cmp);
而stable_sort的用法與sort一致,區別是stable_sort函數遇到兩個數相等時,不對其交換順序;這個應用在數組裏面不受影響,當函數參數傳入的是結構體時,會發現兩者之間的明顯區別;