题解 | #字符串排序#

字符串排序

http://www.nowcoder.com/practice/5af18ba2eb45443aa91a11e848aa6723

不用库函数的暴力解法

主要采用了冒泡排序,分了三种情况对字符串进行处理

#include<string.h>

struct str {
    char ch[101];
};

int main() {
    struct str n[1001];
    struct str temp;
    int count, len, k;
    while ((scanf("%d", &len)) != EOF){
        count = len;
        while (count--) {
            scanf("%s", n[count].ch);
        }
    }
    for (int i = 0; i < len - 1; i++) {
        for (int j = 0; j < len - i - 1; j++) {
            if (strlen(n[j].ch) > strlen(n[j + 1].ch)) {
                for (k = 0; k < strlen(n[j + 1].ch); k++) {
                    if (n[j].ch[k] > n[j + 1].ch[k]) {
                        temp = n[j];
                        n[j] = n[j + 1];
                        n[j + 1] = temp;
                        break;
                    }
                    if (n[j].ch[k] < n[j + 1].ch[k])
                        break;
                }
                if (k == strlen(n[j + 1].ch)) {
                    temp = n[j];
                    n[j] = n[j + 1];
                    n[j + 1] = temp;
                }
            }
            if (strlen(n[j].ch) == strlen(n[j + 1].ch)) {
                for (k = 0; k < strlen(n[j + 1].ch); k++) {
          
                    if (n[j].ch[k] > n[j + 1].ch[k]) {
                        temp = n[j];
                        n[j] = n[j + 1];
                        n[j + 1] = temp;
                        break;
                    }
                    if (n[j].ch[k] < n[j + 1].ch[k])
                        break;
                }
            }
            if (strlen(n[j].ch) < strlen(n[j + 1].ch)) {
                for (k = 0; k < strlen(n[j].ch); k++) {

                    if (n[j].ch[k] > n[j + 1].ch[k]) {
                        temp = n[j];
                        n[j] = n[j + 1];
                        n[j + 1] = temp;
                        break;
                    }
                    if (n[j].ch[k] < n[j + 1].ch[k])
                        break;
                }
            }
        }
    }
    for(int l = 0;l < len;l++){
        printf("%s\n",n[l].ch);
    }
    return 0;
}
全部评论

相关推荐

流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
04-29 18:07
常州大学 Java
寂静羽翼:兄弟我已经亲身经历了,双非没实习很多大厂还是会给笔试的,可是有的公司笔试做的好也不给面一直卡着,ssob基本看我没实习都拒绝我了,但是每天投满偶尔也能有一两场初创公司的面试,但是薪资基本在五六千
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务