我正在尝试编写一个通用函数来对不同类型的数据进行排序。我的代码是:
#include<stdio.h>
#define GENERIC_SORT(TYPE) \
TYPE ##_SORT(TYPE a[],int n) \
{ \
int i,j; \
TYPE aux; \
for(i=1;i<n;i++) \
for(j=n-1;j>=i;j--) \
if(a[j]<a[j-1]) \
{ \
aux=a[j]; \
a[j]=a[j-1]; \
a[j-1]=aux; \
} \
}
GENERIC_SORT(int)
GENERIC_SORT(float)
GENERIC_SORT(double)
GENERIC_SORT(char)
int main(void)
{
int i,a[]={3,7,5,4,6,1};
int_SORT(a,6);
for(i=0;i<6;i++)
printf("%d ",a[i]);
return 0;
}
我正在准备考试,在类(class)中有一个使用 GENERIC_MAX
的示例,它可以找到 2 个值之间的最大值。我应该像这样进行排序...
它在 int
、float
、double
和 char
上运行良好。但是如何使用它对字符串数组(char a[][100]
或 char *a[]
)进行排序?
最佳答案
通用排序的主要示例是 C 运行时库 qsort()
。它最通用的属性之一是它使用作为参数传递的“比较函数”。
为什么不采用这种策略呢?虽然大多数比较函数确实微不足道,但在访问对象的情况下,它对于解释对象内部的内容非常重要。
关于c - 如何编写通用函数对 C 中的字符串数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28073730/