c - 如何编写通用函数对 C 中的字符串数组进行排序?

标签 c arrays sorting macros generic-programming

我正在尝试编写一个通用函数来对不同类型的数据进行排序。我的代码是:

#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 个值之间的最大值。我应该像这样进行排序...

它在 intfloatdoublechar 上运行良好。但是如何使用它对字符串数组(char a[][100]char *a[])进行排序?

最佳答案

通用排序的主要示例是 C 运行时库 qsort()。它最通用的属性之一是它使用作为参数传递的“比较函数”。

为什么不采用这种策略呢?虽然大多数比较函数确实微不足道,但在访问对象的情况下,它对于解释对象内部的内容非常重要。

关于c - 如何编写通用函数对 C 中的字符串数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28073730/

相关文章:

c++ - 我可以合法地写入常量 vector 指向的数据吗?把它分类?

javascript - javascript 中未定义值的排序工作不正确

c - 仅列出常规文件(无目录)问题

c - mpirun 不传递命令行参数

Java对象数组错误(卡片)

c - 为什么对带下标的数组的赋值有效,而对取消引用的指针算术表达式的赋值却无效?

c - 在另一个结构中分配一个结构数组

c - 如何在 yacc 文件中查找 shift/reduce 冲突

c - 使用 pthreads 进行练习,但我的代码中出现了一些意外行为

python - 如何使文件中的每一行成为包含整个文件的列表的子列表?