C语言从2个标准中选择一个排序函数

C语言从2个标准中选择一个排序函数,c,sorting,types,structure,criteria,C,Sorting,Types,Structure,Criteria,我想知道如何使用一个排序函数从两个不同的标准中进行排序选择。 我在考虑实现sort函数(sort),它有一个指向另一个函数(条件)的指针作为参数。该函数标准使用结构为我提供了学生的姓名或年龄。一个函数返回两种类型的数据。我认为这一定是一种空虚。我想使用冒泡排序,但我不知道如何实现Criteria函数,因为我希望它返回char或int值。的行为类似于qsort qsort通过使用指向比较函数的指针来解决此问题,该函数使用指向结构(左和右)的两个指针,并比较指向的值: compare( left,

我想知道如何使用一个排序函数从两个不同的标准中进行排序选择。 我在考虑实现sort函数(sort),它有一个指向另一个函数(条件)的指针作为参数。该函数标准使用结构为我提供了学生的姓名或年龄。一个函数返回两种类型的数据。我认为这一定是一种空虚。我想使用冒泡排序,但我不知道如何实现Criteria函数,因为我希望它返回char或int值。

的行为类似于qsort qsort通过使用指向比较函数的指针来解决此问题,该函数使用指向结构(左和右)的两个指针,并比较指向的值:

compare( left, right ){
  if( left->field < right->field )
     return -1;
  if( left->field > right->field )
     return 1;
  return 0;
}
该类型表示联合中的数据类型,然后可以适当地读取成员


这是
lua
对其类型系统所采取的方法。

您可以参考
qsort()
的原型。使用
qsort()
如何进行比较的决定在您编写的
compare()
函数中。其他一切都一样。。
compare()
函数将是一个if/else函数,用于对哪个字段进行排序。然后有一些全局指示,您可以选择进行哪种比较感谢您的时间!我将尝试实现这个想法的某些部分,尽管它并不完全符合我的需要,它概述了我们在课堂上必须使用的知识领域。更具体地说,我需要一个可以用作排序函数参数的函数,我正在寻找的这个函数必须返回年龄或名称标准,以便排序函数可以知道要选择哪一个:D再次感谢你@ConstantinescuCristiana:您使用两个不同的比较函数-一个用于名称比较,另一个用于年龄比较。在调用sort函数时,传递正确的比较器以进行这次要进行的比较。这就是“查看
qsort()
”注释的意思。标准的C
qsort()
函数不仅允许(要求)您使用不同的比较器,还允许您对任何数据类型的数组进行排序。但这里所支持的想法基本上是一样的——细节略有不同。非常感谢!我现在明白了:D
 struct data {
    enum Types type;
    union {
        double dblVal;
        int    intVal;
        ....;
    } u;
 };