qsort函式實現

2021-09-24 16:31:47 字數 2044 閱讀 3815

首先在實現my_qsort函式前,先了解下編譯器函式庫對於qsort的描述.

qsort函式 :編譯器函式庫自帶的快速排序函式

功能: 使用快速排序演算法思想進行排序

標頭檔案:   stdlib.h

函式用法:  qsort(void*,size_t num,size_t size,int (*)(const void*, const void*));或者qsort(a, size_t num,size_t size,comp);

函式引數解析: (1)待排序陣列首位址

(2)陣列中待排序元素數量

(3)各元素的占用空間大小

(4)指向函式的指標,用於確定排序的順序

應用:使用qsort函式對int型別進行排序.

#include #include int comp(const void * p1, const void * p2)

int main()

; qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof (int), comp);

for (int i = 0; i < sizeof(arr) / sizeof (arr[0]); i++)

system("pause");

return 0;

}

使用qsort函式對char型別進行排序.

#include #includeint comp(const void * p1, const void * p2)

int main()

; qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(char), comp);

for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)

printf("\n");

system("pause");

return 0;

}

使用qsort函式對double型別進行排序.

#include #include int comp(const void * p1, const void * p2)

int main()

; qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof (double), comp);

for (int i = 0; i < sizeof(arr) / sizeof (arr[0]); i++)

system("pause");

return 0;

}

使用qsort函式對結構體型別進行排序.

#include#include//定義乙個結構體

typedef struct stustu;

int cmp(const void *a, const void *b)

int main()

void swap1(void *p1, void * p2, int size)

}void myqsort(void *base, int count, int size, int(*cmp)(void *, void *))

} }}int main()

; int i = 0;

myqsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof (int), comp);

for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)

printf("\n");

system("pause");

return 0;

}

模擬實現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 主要根據你給的比較條件給乙個快速排序,主要是...

自己實現qsort函式(quick sort)

通過msdn查詢,可得 qsort函式是有四個引數的分別為 1 void base 引數是對接受需要排序的陣列 2 size t num 引數是接受陣列的總長度 3 size t width 引數是接受陣列乙個單位的長度 4 int cdcel compare const void elem1,co...