qsort 快速排序

2021-06-20 07:39:26 字數 1377 閱讀 3977

[+]

[cpp]view plain

copy

print?

void

qsort(

void

*base, 

size_t

nmemb, 

size_t

size, 

int(*compare) (

const

void

*, const

void

*));  

函式原型在中找到

[html]view plain

copy

print?

base    : 指向陣列中第乙個元素(如果只是對陣列的一段區域進行排序,那麼要使base指向這段區域的第乙個元素)  

nmemb   : 要排序元素的數量  

size    : 每個陣列元素的大小,用位元組來衡量  

compare : 指向比較函式的指標  

陣列的元素可能是任何型別的,甚至可能是結構體或聯合,所以必須告訴函式qsort如何確定兩個陣列元素哪乙個「更小」。通過編寫比較函式可以為qsort提供這些資訊。當給定兩個指向陣列元素的指標p和q時,比較函式必須返回乙個整數,如果*p小於*q,那麼返回的數為負數;如果*p等於*q,那麼返回0.如果*p大於*q,返回正數.按照這種結果返回,qsort對陣列預設是公升序排序.如果想降序,只需要將上述結果返回值*-1即可

以int陣列為測試例子,進行排序

[cpp]view plain

copy

print?

#include 

#include 

intcompi(

const

void

*a, 

const

void

*b)  

intcompd(

const

void

*a, 

const

void

*b)  

intmain()  

switch

(type)  

if(type == 1)  

else

for(i = 0; i 

printf("\n"

);  

}  return

0;  

}   

測試結果:

大同小異,簡單的貼一道acm題,來說明結構體陣列排序的方法吧

qsort 快速排序

qsort函式是ansi c標準中提供的,其宣告在stdlib.h檔案中,是根據二分法寫的,其時間複雜度為n log n 其結構為 void qsort void base,size t nelem,size t width,int comp const void const void 其中 bas...

qsort快速排序

函式原型 void qsort void base size t num,size t width,int cdecl compare const void const void 標頭檔案 stdlib.h size t num 陣列中待排序元素的數量 size t width 各元素占用空間大小 ...

qsort快速排序

qsortc語言自帶的快速排序,今天來玩玩,直接看 2.陣列中待排序元素數量 3.各元素的占用空間大小 4.指向函式的指標,用於確定排序的順序 include include qsort排序結構體 typedef struct node node int compinc1 const void a,...