编写一个sort函数,它用于对任何类型的数组进行排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一个sort函数,它用于对任何类型的数组进行排序相关的知识,希望对你有一定的参考价值。
编写一个sort函数,它用于对任何类型的数组进行排序。
为了是函数更为通用,它的其中一个参数必须是一个指向比较回调函数的指针,该回调函数由调用程序提供。比较函数接收两个参数,也就是两个指向需要进行比较的值的指针。如果两值相等,返回0,如果值1小于值2,返回-1,否则返回1.
请写的详细点~
是c
#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);
参考技术B STL里有sort函数,接受任意类型的泛型容器,比如vector,list等等.参考那个的源代码不是挺好吗?
以上是关于编写一个sort函数,它用于对任何类型的数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章
PHP中的排序函数sortasortrsortkrsortksort区别分析