C:按给定排序对结构列表进行排序

时间:2017-05-29 13:47:22

标签: c list sorting

我有一个结构列表:

submitted-image-url

我在列表中插入内容时对此进行排序。

伪:

typedef struct {
    uint8_t mac_addr[6];
    uint32_t signal;
    uint32_t freq;
    ...
}pseudo_entry;

这非常不灵活,我想要一个我可以作为启动参数给出的订单。 有什么好主意吗?

我不需要整个代码。只是想法或可能是图书馆。

感谢。 :)

3 个答案:

答案 0 :(得分:1)

您可能会对Intrusive Lists面向数据的设计(结构数组与数组结构)感兴趣。优点包括更少的缓存未命中以及更好的数据和代码分离。

如果您正在使用C或 lambda ,如果您正在使用负责排序值并返回它们的C ++,则可以接收函数指针。

答案 1 :(得分:0)

您可以将数字转换为字符串(char*),然后将它们连接成一个字符串。我认为对它们进行排序可能更容易,因为那时你只需要一个if语句。但是,转换和连接可能比使用您在问题中提到的三个条件花费更多时间,因此您应该比较时间以检查它是否真的值得。

答案 2 :(得分:0)

您需要一个比较器功能,然后您可以将其传递给qsort功能:

int compt(void *f, void *s){
  return (f->signal) -(s->signal);
}

然后:

qsort(&curr,<yourarraysize>, sizeof(cur), &compt);