C语言一种排序功能从2个标准中选择

时间:2016-02-27 10:08:12

标签: c sorting types structure criteria

我想知道如何使用单个排序函数从2个不同的标准中进行排序。     我正在考虑实现一个sort函数(Sort),它有一个指向另一个函数(Criteria)的指针作为参数。该功能Criteria使用结构为我提供了(比方说)名称或学生的年龄。所以一个函数返回两种类型的数据。我认为这必须是一个空白。我想使用冒泡排序,但我不知道如何实现Criteria函数,因为我希望它返回char或int值。

1 个答案:

答案 0 :(得分:0)

表现得像qsort

qsort通过指向比较函数来解决问题,该函数采用两个指向结构的指针(左和右)并比较指向的值:

compare( left, right ){
  if( left->field < right->field )
     return -1;
  if( left->field > right->field )
     return 1;
  return 0;
}

左侧和右侧类型以void*传递,但转换为具体类型。 比较的不同实现给出了不同的字段。

变体结构

替代方案是union / struct

 struct data {
    enum Types type;
    union {
        double dblVal;
        int    intVal;
        ....;
    } u;
 };

该类型表示联合中的数据类型,然后可以适当地读取成员。

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