编写一个sort函数,它用于对任何类型的数组进行排序 10

编写一个sort函数,它用于对任何类型的数组进行排序。为了是函数更为通用,它的其中一个参数必须是一个指向比较回调函数的指针,该回调函数由调用程序提供。比较函数接收两个参数... 编写一个sort函数,它用于对任何类型的数组进行排序。
为了是函数更为通用,它的其中一个参数必须是一个指向比较回调函数的指针,该回调函数由调用程序提供。比较函数接收两个参数,也就是两个指向需要进行比较的值的指针。如果两值相等,返回0,如果值1小于值2,返回-1,否则返回1.

请写的详细点~
是c
展开
 我来答
fgfxr03
推荐于2018-04-11 · TA获得超过151个赞
知道答主
回答量:236
采纳率:100%
帮助的人:0
展开全部
如下,为了简便,程序中使用了一些标准库函数,所以需要包含两个头文件,sort()函数利用选择排序算法对数组进行排序,调用时需要传入的参数和标准库函数qsort()一致

#include <stdlib.h>
#include <string.h>

void sort(void *base,unsigned int n,unsigned int width,int (*comp)(void *a,void *b))
{
char *p=(char *)base;
char *te=(char *)malloc(width);
char *ptr;
char *pn=p+width;
const char *cp=p+(n-1)*width;

for (; p<cp; p+=width) {
ptr=p;
for (pn=p+width; pn<=cp; pn+=width)
if ((*comp)(ptr,pn)>0) ptr=pn;
if (ptr!=p) {
memcpy(te,p,width);
memmove(p,ptr,width);
memmove(ptr,te,width);
}
}

free(te);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
志远823
2011-02-18 · TA获得超过2296个赞
知道小有建树答主
回答量:913
采纳率:66%
帮助的人:1183万
展开全部
STL里有sort函数,接受任意类型的泛型容器,比如vector,list等等.参考那个的源代码不是挺好吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式