天天看点

用冒泡排序的方法模拟实现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函数