题解 | #字符串排序#

字符串排序

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;
}
全部评论

相关推荐

咩咩子_:真的是这样,我去年年底投施耐德电子,erp系统低代码开发不要我,说我看着不像呆得下去的人
点赞 评论 收藏
分享
02-02 20:25
门头沟学院 Java
数学转码崽:八股文也算是前人总结的精华,但是因为全是结果导向,你光背不去理解它背后的深层原理和这样做的原因,反而忽略了程序员最该重视的过程导向。推荐你不会的就去多问ai,比如我当时背的时候,concurrenthashmap底层原理常见八股网站都会讲,但是我不理解为什么它去用synchronize锁节点,为什么不用reentrantlock去锁节点。面试官问我你为什么觉得synchronize在这个场景下性能更好呢?虽然面试官可能也不确定清楚,但是你可以尝试给他解答,让他看见你的思考,这才是最重要的,毕竟你没实习,你的项目你也无法证明是你自己思考的产物,那就在别的地方体现你的能力
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务