首先在實現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型別進行排序.
使用qsort函式對char型別進行排序.#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函式對double型別進行排序.#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函式對結構體型別進行排序.#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;
}
#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...