天天看點

用冒泡排序的方法模拟實作qsort函數

分析:

用冒泡排序的方法實作快速排序主要是用回調函數的知識,我們知道庫函數中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函數

 我們也可以排序字元串

用冒泡排序的方法模拟實作qsort函數

qsort可以實作多種類型的排序,我們可以模拟實作它。

要實作它我們要注意以下幾點:

要實作這個函數我們首先要有比較函數,用來比較兩個元素大小,判斷傳回值的大小來确定是否要交換兩個元素。比較函數應設計為傳回值int,參數為void * 類型的指針,因為我們要實作多種類型的元素的排序。

還要一個交換函數,當兩元素滿足交換條件是交換它們。交換函數的類型應該為傳回值為void,參數為兩個char *類型指針(元素類型不同),還有一個是元素類型的大小(位元組)。交換時應該以位元組為機關交換。

以下是我的實作方法:

用冒泡排序的方法模拟實作qsort函數
用冒泡排序的方法模拟實作qsort函數