700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c语言实现qsort排序函数

c语言实现qsort排序函数

时间:2018-11-29 03:31:43

相关推荐

c语言实现qsort排序函数

目录

1.了解一下qsort函数的参数和实现思路

2.实现代码:

1.了解一下qsort函数的参数和实现思路

A.先看看参数:

void* base:需要排序数组的首地址。

size_t num:数组元素个数。

size_t size:每个元素的大小。

int (*compar)(const void*,const void*):一个返回值为int的函数指针compar。

关于compar: compar是自己编写的函数,根据需要排序的数据不同也需要用不同的比较方式。返回值是: 当前>后时返回正数,反之返回负数。

B.关于实现思路:

基本排序思想利用冒泡即可,而关键是排序中比较方法和交换方法的实现。因为是任意数据,所以要实现一种通用的函数。让我们看看一种实现方案:

2.实现代码:

A.比较算法(数据类型为int):

int cmp(void* p1, void* p2){return *(int*)p1 - *(int*)p2;}

B。交换算法:

void swap(char* p1, char* p2,int width){int i = 0;for (i = 0; i < width; i++){char* temp = *(p1 + i);*(p1+i) = *(p2+i);*(p2 + i)=temp;}}

C.最后排序的实现:

void my_qsort(void* arr, int len, int width){int i = 0; int j = 0;for (i = 0; i < len; i++){for (j = 0; j < len - 1 - i; j++){if (cmp((char*)arr + j*width, (char*)arr + (j + 1)*width)>0){swap((char*)arr + j*width, (char*)arr + (j + 1)*width,width);}}}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。