C語言中sort 排序函式應用

2021-10-25 00:20:41 字數 1766 閱讀 5174

**

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