分析:
用冒泡排序的方法實作快速排序主要是用回調函數的知識,我們知道庫函數中qsort的函數原型是:
void qsort( void *base, size_t num, size_t width, int (__cdecl *compare )(const void *elem1, const void *elem2 ) );
函數原型中qsort函數有四個參數,分别為
base:是指目标數組的開始位置,可以了解為數組首元素的位址;
num:是指數組中元素的個數;
width:是指數組中每個元素的類型的大小;
compare:是一個函數指針,是一個比較函數,它的傳回值是int,通過它來判斷要比較的元素的類型;
下面是使用qsort函數例子:
我們也可以排序字元串
qsort可以實作多種類型的排序,我們可以模拟實作它。
要實作它我們要注意以下幾點:
要實作這個函數我們首先要有比較函數,用來比較兩個元素大小,判斷傳回值的大小來确定是否要交換兩個元素。比較函數應設計為傳回值int,參數為void * 類型的指針,因為我們要實作多種類型的元素的排序。
還要一個交換函數,當兩元素滿足交換條件是交換它們。交換函數的類型應該為傳回值為void,參數為兩個char *類型指針(元素類型不同),還有一個是元素類型的大小(位元組)。交換時應該以位元組為機關交換。
以下是我的實作方法: