程序设计,输入多个字符串按字典顺序排序输出。

9.程序设计,输入多个字符串按字典顺序排序输出。
要点分析:要求设计一个排序函数 sort(char),实现字符串按字典顺序排序,在主函数中实现字符串的输入,调用排序函数实现字符串排序,然后在主程序中输出排序结果

#include <iostream>
#include <cstring>

void sort(char **arr, int len) {
    for (int i = 0; i < len - 1; i++) {
        for (int j = 0; j < len - i - 1; j++) {
            if (std::strcmp(arr[j], arr[j+1]) > 0) {
                std::swap(arr[j], arr[j+1]);
            }
        }
    }
}

int main() {
    const int N = 100;  // 假设所有字符串的长度都小于 100
    const int MAX = 1000;  // 假设字符串的总数不超过 1000
    char s[MAX][N];  // 存储字符串的二维字符数组
    char *ptr[MAX];  // 存储字符串的指针数组
    int n = 0;  // 字符串的数量

    // 读入所有字符串
    while (std::cin >> s[n]) {
        ptr[n] = s[n];
        n++;
    }

    // 对字符串进行排序
    sort(ptr, n);

    // 输出排序后的字符串
    for (int i = 0; i < n; i++) {
        std::cout << ptr[i] << std::endl;
    }

    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:sort()函数列表排序
  • 以下回答来自chatgpt:

    解决方案:

    针对该问题,我们可以选择常见的排序算法来实现多个字符串的按字典顺序排列。以下是一种常见的基于Python语言的实现方法:

    def sort(lst):
        """
        定义按字典顺序排序的函数
        :param lst: 待排序的字符串列表
        :return: 排序后的字符串列表
        """
        # 使用sorted函数进行排序,并设置key参数为字符串本身(即按字典顺序排序)
        return sorted(lst, key=str)
    
    # 主函数
    if __name__ == "__main__":
        # 读取多行输入,每行输入为一个字符串
        # 将字符串存储到列表中
        strings = []
        while True:
            try:
                s = input()
                if not s:
                    break
                strings.append(s)
            except EOFError:
                break
    
        # 对字符串进行排序
        sorted_strings = sort(strings)
    
        # 输出排序结果
        for s in sorted_strings:
            print(s)
    

    在这个程序中,我们定义了一个sort函数来实现字符串的排序。函数中使用sorted函数进行排序,并设置key参数为字符串本身(即按字典顺序排序)。主函数中读取多行输入,每行输入为一个字符串,将字符串存储到列表中,并对列表中的字符串进行排序,最后输出排序结果。

    除了上述方法,我们还可以使用其他常见的排序算法来实现,例如选择排序、插入排序、希尔排序、归并排序和快速排序等。这些算法各有优缺点,可以根据实际情况进行选择。

    需要注意的是,排序算法的时间复杂度是一个重要的考虑因素。在使用排序算法解决实际问题时,只有在理解其时间复杂度并能满足实际需求的情况下才能进行选择。

    另外,在本问题中要求按字典顺序排序,这是一个基于字符串的比较过程。在Python中,字符串的比较方式是按ASCII码进行比较,因此按字典顺序排序等价于按字符串的ASCII码顺序进行排序。如果涉及到其他语言或字符编码的问题,则需要根据实际情况进行选择。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^