qsort函式包含在
的標頭檔案,能夠對陣列實現快排
陣列名是 basevoid qsort(void *base,
size_t nmemb,
size_t size,
int (*compar)(const void *, const void *)
);
陣列的個數是 nmemb
每個陣列元素的大小是 size
函式指標為 compare,決定了排序的順序
返回值:無
compar引數指向乙個比較兩個元素的函式。比較函式的原型應該像下面這樣。注意兩個形參必須是const void *型,同時在呼叫compar 函式(compar實質為函式指標,這裡稱它所指向的函式也為compar)時,傳入的實參也必須轉換成const void *型。在compar函式內部會將const void *型轉換成實際型別
如果compar返回值小於0(< 0),那麼p1所指向元素會被排在p2所指向元素的前面int compar(const void *p1, const void *p2);
如果compar返回值等於0(= 0),那麼p1所指向元素與p2所指向元素的順序不確定
如果compar返回值大於0(> 0),那麼p1所指向元素會被排在p2所指向元素的後面
因此,如果想讓qsort()進行從小到大(公升序)排序,那麼乙個通用的compar函式可以寫成這樣:
int comparemytype (const void * a, const void * b)
int num[100];
int cmp ( const void *a , const void *b )
qsort(num,100,sizeof(num[0]),cmp);
double in[100];
int cmp( const void *a , const void *b )
qsort(in,100,sizeof(in[0]),cmp);
struct in
s[100];
int cmp( const void *a ,const void *b)
qsort(s,100,sizeof(s[0]),cmp);
struct in
s[100];
//按照x從小到大排序,當x相等時按照y從大到小排序
int cmp( const void *a , const void *b )
qsort(s,100,sizeof(s[0]),cmp);
struct in
s[100];
//按照結構體中字串str的字典順序排序
int cmp ( const void *a , const void *b )
qsort(s,100,sizeof(s[0]),cmp);
qsort函式學習總結
qsort包含在標頭檔案中,此函式 根據你給的比較條件進行快速排序,通過指標移動實現排序。排序之後的結果仍然放在原陣列中。使用qsort函式必須自己寫乙個比較函式,這一點是很重要的一步,也比較簡單。函式原型 void qsort void base,size t num,size t size,in...
qsort函式 sort函式
先說明一下qsort和sort,只能對連續記憶體的資料進行排序,像鍊錶這樣的結構是無法排序的。首先說一下,qsort qsort 基本快速排序的方法,每次把陣列分成兩部分和中間的乙個劃分值,而對於有多個重複值的陣列來說,基本快速排序的效率較低,且不穩定 整合在c語言庫函式裡面的的qsort函式,使用...
qsort函式 sort函式
先說明一下qsort和sort,只能對連續記憶體的資料進行排序,像鍊錶這樣的結構是無法排序的。首先說一下,qsort qsort 基本快速排序的方法,每次把陣列分成兩部分和中間的乙個劃分值,而對於有多個重複值的陣列來說,基本快速排序的效率較低,且不穩定 整合在c語言庫函式裡面的的qsort函式,使用...