c語言qsort函式的應用

2021-10-02 12:23:53 字數 2966 閱讀 8867

qsort函式(全稱quicksort)。它是ansi c標準中提供的,其宣告在stdlib.h檔案中,是根據二分法寫的,其時間複雜度為n*log(n)

功能

對乙個陣列進行排序(任意型別陣列)

函式定義

void qsort(void* base,size_t num,size_t width,int(__cdeclcompare)(const void,const void*));

引數

qsort(1,2,3,4);

1:排序陣列首位址;

2:排序個數;

3:各元素的占用空間大小(可用sizeof()函式計算):

4:指向函式的指標,用於確定排序的順序(需要自定義乙個比較函式);

可根據所需排序的型別來寫比較函式(比較函式的函式名任意)

比較函式的引數在qsort函式的定義中以固定

對int型別陣列排序

#include

#include

intname

(const

void

*a,const

void

*b)int

main()

,i;qsort

(a,5

,sizeof

(int

),name)

;for

(i=0

;i<

5;i++

)printf

("%d "

,a[i]

);}

輸出如下

123

55

對long long型別排序

#include

#include

intname

(const

void

*a,const

void

*b)int

main()

,i;qsort

(a,5

,sizeof

(long

long

),name)

;for

(i=0

;i<

5;i++

)printf

("%lld "

,a[i]);

}

輸出如下

156

123456789123

987654321654

對char型別排序

#include

#include

intname

(const

void

*a,const

void

*b)int

main()

;qsort

(a,4

,sizeof

(char

), name)

;printf

("%s "

, a)

;}

輸出如下

abcd
對字串排序

#include

#include

#include

`int

name

(const

void

*a,const

void

*b)int

main()

,,,,

};qsort

(a,5

,sizeof

(a[0])

, name)

;for

(i =

0; i <

5; i++

)printf

("%s\n"

, a[i]);

}

輸出如下

aom

bomdili

fork

mary

對double型別排序

#include

#include

intname

(const

void

*a,const

void

*b)int

main()

;qsort

(a,5

,sizeof

(double

), name)

;for

(i =

0; i <

5; i++

)printf

("%lf\n"

, a[i]);

}

輸出如下

0.000000

1.000000

2.000000

2.000000

3.000000

結構體陣列的排序與上述型別相似就不在此贅述

總結

#include

#include

#include

intname

(const

void

*a,const

void

*b)int

main()

將*pa-*pb改為 *pb-*pa即可將公升序排序改為降序排序

C語言中qsort函式的應用

qsort函式包含在的標頭檔案裡,本文中排序都是採用的從小到大排序 int num 100 int cmp const void a const void b qsort num,100,sizeof num 0 cmp char word 100 int cmp const void a cons...

C語言 qsort函式

c程式使用標準庫函式qsort排序整數檔案 include include include include define max 10 int int cmp const void a,const void b int main while feof fp length fclose fp qsor...

C語言的qsort函式

qsort 看起來和c 的sort 差不多,但是其實差別很大,qsort的cmp函式,傳入的是指標,返回值是int sort的則傳入值,返回值是bool 當qsort的返回值是0時,陣列的順序可能發生改變,這帶來了不確定性 當有不改變相同大小元素的順序時,需要對cmp函式做出調整 qsort的cmp...