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