qsort函式及其模擬實現

2021-10-10 14:43:18 字數 1181 閱讀 2085

qsort函式:無型別排序函式

void qsort (void* base, size_t num, size_t size,int (compar)(const void,const void*));

傳入引數陣列首位址,陣列字元個數,陣列型別大小,自己寫的比較函式位址

模擬實現qsort函式:

#include

#include

#include

#include

intminecmp

(const

void

*_p1,

const

void

*_p2)

//比較函式

elseif(

*p1 <

*p2)

else

}void

print

(int

*arr,

int n)

//列印函式

void

minechange

(char

*src,

char

*dst,

int size)

//交換函式

}void

mineqsort

(void

*arr,

int num,

int size,

int(

*comp)

(const

void*,

const

void*)

)//模擬qsort函式}if

(flag ==0)

}}intmain()

;int len =

sizeof

(arr)

/sizeof

(arr[0]

);print

(arr, len)

;mineqsort

(arr,

sizeof

(arr)

/sizeof

(arr[0]

),sizeof

(int

), minecmp)

;print

(arr, len)

;system

("pause");

return0;

}

模擬實現qsort函式

上節提到qsort函式的原型,今天我們就來模擬下它 首先是qsort函式的主體部分,主要還是迴圈,判斷比較,較困難的是型別的轉化,我們希望可以知道每次訪問的位元組數,即將初始位址轉化為字元指標,即每次解引用可訪問乙個位元組,而再加上j width就可以知道訪問第幾個元素,這樣就可以方便的比較了。vo...

模擬實現qsort函式

模擬實現qsort函式 qsort 的函式原型是 void qsort void base,size t num,size t width,int cdecl compare const void const void qsort 即,quicksort 主要根據你給的比較條件給乙個快速排序,主要是...

C 參考庫函式qsort 模擬實現通用氣泡排序

相信大家對氣泡排序一定不陌生吧,作為一種經典的排序方法,它的基本思想是 以公升序為例 將相鄰的兩個數進行比較,若前乙個數比後乙個數大,則交換它們的順序,這樣一趟下來,最大的數就跑到了最後一位,的二趟還是一樣的方法,最大的數不參與交換,這樣進行n 1趟後,我們就實現了排序 void bubblesor...