C编程根据4个字符串对结构数组进行排序
C programming sorting an array of structs based on 4 strings
编辑:
我忘了说它是从循环链表开始的!
我需要按以下顺序对下面定义的接触结构数组进行排序:
姓氏
名字
电子邮件
Phone个数
- 我将如何以有效的方式解决这个问题?
- 就大 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)
编辑: 我忘了说它是从循环链表开始的!
我需要按以下顺序对下面定义的接触结构数组进行排序:
姓氏
名字
电子邮件
Phone个数
- 我将如何以有效的方式解决这个问题?
- 就大 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)