C编程根据4个字符串对结构数组进行排序

C programming sorting an array of structs based on 4 strings

编辑: 我忘了说它是从循环链表开始的!


我需要按以下顺序对下面定义的接触结构数组进行排序:

姓氏
名字
电子邮件
Phone个数

  1. 我将如何以有效的方式解决这个问题?
  2. 就大 O 顺序而言,哪种排序方法最合适?

这是我的结构定义:

struct contact {
    char firstName[256], lastName[256], email[256], phoneNumber[256];
    struct contact *pPrev;
    struct contact *pNext;
};

看起来您的数据是按列表组织的(由于 pPrev 和 pNext)。 qsort() 不能用于列表。

对于列表,合并排序是一种方法:只要列表包含一个以上的元素,将其拆分为两个列表,对每个列表进行排序,然后将两个排序的列表合并为一个:因为两个列表都已排序只需要比较头部。比较两个列表的头部,删除较小的并将其附加到排序列表中。

复杂度为 O(N*log N)