【发布时间】:2019-12-29 11:04:28
【问题描述】:
我必须编写一个对数组中的结构进行排序的函数。结构是:
#define MAX_USERNAME_LENGTH 16
typedef struct{
char username[MAX_USERNAME_LENGTH];
unsigned int rides;
unsigned int rank;
} driver;
程序从 .txt 文件加载数据并填充一个数组
driver driver_list[256]
我必须按等级和乘车次数对 driver_list 进行排序。所以如果我的文件包含
//user rides rank
frank209 3 6
john76 7 6
harry99 2 2
bob77 5 2
输出必须显示:
john76 7 6
frank209 3 6
bob77 5 2
harry99 2 2
有办法做到这一点吗?我已经尝试使用 2 嵌套的选择排序,但在输出中我看到列表仅按排名或游乐设施排序。 感谢您的帮助
【问题讨论】:
-
在标准 C 文档中查找
qsort或 google。许多实现都提供了这个功能。 -
简短回答:是的。通常的方法是有一个更高级的比较功能。您进行常规排序,但每次比较两条记录时,首先比较主键,如果它们相等,则回退并比较辅助键。
-
您只需要根据 2 个值对排序进行比较即可。首先比较排名。如果它们不同,请采取相应措施。如果它们相同,请比较游乐设施并采取相应措施。
标签: c sorting struct structure qsort