**
sort(first_pointer,first_pointer+n,cmp)
該函式可給陣列,或者鍊錶list、向量排序。
實現原理:sort並不是簡單的快速排序,它對普通的快速排序進行了優化,此外,它還結合了插入排序和推排序。系統會根據你的資料形式和資料量自動選擇合適的排序方法,這並不是說它每次排序只選擇一種方法,它是在一次完整排序中不同的情況選用不同方法,比如給乙個資料量較大的陣列排序,開始採用快速排序,分段遞迴,分段之後每一段的資料量達到乙個較小值後它就不繼續往下遞迴,而是選擇插入排序,如果遞迴的太深,他會選擇推排序。
此函式有3個引數:
引數3:預設可以不填,如果不填sort會預設按陣列公升序排序。也就是1,2,3,4排序。也可以自定義乙個排序函式,改排序方式為降序什麼的,也就是4,3,2,1這樣。
使用其函式頭為
#include
並且匯出命名空間:
using
namespace std;
公升序排列(1 2 3 4):
公升序排列時可省略第三個引數,預設為公升序。
例如(此處定義陣列a[4]=公升序排列)
第一種表示方式(省略第三個引數**):
#include
#include
#include
using
namespace std;
intmain()
;sort
(a,a+4)
;//此處省略了第三個引數
for(
int i=
0;i<=
3;i++
)printf
("%d"
,a[i]);
return0;
}
第二種表示方式(加參,自定義乙個公升序函式)
#include
#include
#include
using
namespace std;
bool
com(
int a,
int b)
intmain()
;sort
(a,a+
4,com)
;for
(int i=
0;i<=
3;i++
)printf
("%d"
,a[i]);
return0;
}
輸出結果:
1234
降序排列(4 3 2 1):
降序排列不可省略引數3,需要自定義乙個降序函式
例如(排列陣列a[4]=)
#include
#include
#include
using
namespace std;
bool
com(
int a,
int b)
intmain()
;sort
(a,a+
4,com)
;for
(int i=
0;i<=
3;i++
)printf
("%d"
,a[i]);
return0;
}
輸出結果:
4321
C語言sort排序
sort排序結構體及sort降序排序 寫給自己看的 include using namespace std struct objectsth 5 int x 5 int cmp1 object x,object y else return x.b y.b else return x.a y.a 優先...
C語言中隨機函式應用
time t t srand unsigned time t printf d n rand 100 第二個程式用到了乙個新的函式srand,這個函式是給隨機數產生乙個隨機種子 seed 函式原型是srand unsigned time null time的值每時每刻都不同。所以種子不同,所以,產生...
C語言中隨機函式應用
可能大家都知道c語言中的隨機函式random,可是random函式並不是ansi c標準,所以說,random函式不能在gcc,vc等編譯器下編譯通過。那麼怎麼實現c語言中的隨機函式呢?除了random函式,還有乙個rand函式,也是乙個隨機函式,可以產生從0到rand max的隨機數。includ...