任意数据类型数组排序(冒泡法)的c接口定义如下:
int bubble_sort(void *array, size_t nmemb, size_t sz, int (*cmp)(const void *, const void *, int), int sort_order)
(1)传入数组空指针array、数组每个元素的长度nmemb、数组元素个数sz,兼容不同的数据类型;
(2)不同数据类型的比较函数cmp,以回调函数的形式传入,实现排序算法与具体的数据类型解耦;
(3)sort_order指定是升序或者降序。当然,该参数也可以不要,但是bubble_sort接口的调用者则需要针对不同的数据类型,写升序和降序的比较函数,个人觉得更麻烦。
c代码参考魏老师的《C语言最佳实践》,有所改动。完整代码如下:
#include <stdint.h>
#include <string.h>
#include <malloc.h>
#define SWAP_MAX_NMEMB 100
#define ASC 0
#define DESC 1
//交换两个变量
int swap(void *a, void *b, size_t nmemb)
{
uint8_t tmp[SW

最低0.47元/天 解锁文章
736

被折叠的 条评论
为什么被折叠?



