qsort 函式學習

2021-10-02 16:26:00 字數 1596 閱讀 8484

qsort函式包含在

的標頭檔案,能夠對陣列實現快排

void qsort(

void *base,

size_t nmemb,

size_t size,

int (*compar)(const void *, const void *)

);

陣列名是 base

陣列的個數是 nmemb

每個陣列元素的大小是 size

函式指標為 compare,決定了排序的順序

返回值:無

compar引數指向乙個比較兩個元素的函式。比較函式的原型應該像下面這樣。注意兩個形參必須是const void *型,同時在呼叫compar 函式(compar實質為函式指標,這裡稱它所指向的函式也為compar)時,傳入的實參也必須轉換成const void *型。在compar函式內部會將const void *型轉換成實際型別

int compar(const void *p1, const void *p2);
如果compar返回值小於0(< 0),那麼p1所指向元素會被排在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函式,使用...