【发布时间】:2018-09-22 02:16:55
【问题描述】:
我正在尝试运行 qsort 以首先按数字排序,然后按字母顺序排序。数组单词是:
COPY 3
CLOSER 2
TAUGHT 2
AW 2
LOOKS 2
SHAD 3
HA 3
结构是:
typedef struct {
char word[101];
int freq;
} Word;
到目前为止我的比较功能是:
int compare(const void *c1, const void *c2){
Word *a1 = (Word *)c1;
Word *b1 = (Word *)c2;
return (b1->freq - a1->freq);
}
而我的 qsort 函数是:
qsort(words, count, sizeof(Word), compare);
但是我按频率排序后不知道如何按字母顺序排序。
【问题讨论】:
-
Richard,您的比较功能需要更复杂。比较频率和字符串...
-
如果单词出现的频率相同,则需要比较单词。
if (b1->freq != b2->freq) return (b1->freq - b2->freq) else return strcmp(b1->word, b2->word);. -
@JonathanLeffler 为什么不把答案写成答案?不过,你在那里混淆了一些变量名。
-
是的,我混淆了名称,因为问题中的名称不一致。即使名称已修复,也不足以将其转换为答案。 (或者,如果您愿意,“我很懒,没有看到提供答案的足够好处”,尤其是因为我必须写更多才能使它成为我可以接受的答案。)
-
我猜对我来说更多:)