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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一个sort函数,它用于对任何类型的数组进行排序相关的知识,希望对你有一定的参考价值。

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

请写的详细点~
是c

参考技术A 如下,为了简便,程序中使用了一些标准库函数,所以需要包含两个头文件,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);
参考技术B STL里有sort函数,接受任意类型的泛型容器,比如vector,list等等.参考那个的源代码不是挺好吗?

以上是关于编写一个sort函数,它用于对任何类型的数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章

PHP中的排序函数sortasortrsortkrsortksort区别分析

JS对象数组多条件排序

设计一个一维数组的排序函数p_sort,并调用它对10个整数进行排序。p_sort函数原型如下:

用于对字符串进行排序的 C++ sort() 函数

js_sort()对数组元素进行排序

PHP常用数组函数2