第1个回答 2022-06-12
用两次冒泡排序,
第一次先排序长度,
第二次排序时,只有在两个字符串长度相等的情况下,再进行字典序排序。
代码如下:
for (i = 0; i < N - 1; i++){
for (j = 0; j < N - i - 1; j++){
if (strlen(wordLib[j]) < strlen(wordLib[j + 1])){
strcpy(tmpword, wordLib[j]);
strcpy(wordLib[j], wordLib[j + 1]);
strcpy(wordLib[j + 1], tmpword);
}
}
}
for (i = 0; i < N - 1; i++){
for (j = 0; j < N - i - 1; j++){
if ((strlen(wordLib[j]) == strlen(wordLib[j + 1])) && (strcmp(wordLib[j], wordLib[j + 1]) > 0)){
strcpy(tmpword, wordLib[j]);
strcpy(wordLib[j], wordLib[j + 1]);
strcpy(wordLib[j + 1], tmpword);
}
}
}