使用冒泡排序对课程进行排序

CCBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个项目中,你将学习如何使用冒泡排序算法来组织编程课程列表。课程将按字典顺序排序,这样你就能轻松查看和总结你所学的编程语言。

👀 预览

$ gcc courses.c -o courses
$./courses
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP

🎯 任务

在这个项目中,你将学习:

  • 如何正确计算数组的长度
  • 如何修改排序函数的参数类型
  • 如何纠正排序算法中的比较和交换逻辑

🏆 成果

完成这个项目后,你将能够:

  • 使用冒泡排序算法组织编程课程列表
  • 理解正确计算数组长度和函数参数类型的重要性
  • 在排序算法中应用正确的比较和交换逻辑
  • 展示你按照分步说明修改现有代码以实现预期结果的能力

修正数组长度计算

在这一步中,你将学习如何正确计算 courses 数组的长度。

  1. 打开位于 /home/labex/project/ 目录下的 courses.c 文件。

  2. 找到以下代码行:

    int n = strlen(courses);

    这一行使用 strlen 函数来计算 courses 数组的长度,这是不正确的。strlen 函数用于计算字符串的长度,而不是数组的长度。

  3. 将上述代码行替换为以下内容:

    int n = sizeof(courses) / sizeof(courses[0]);

    这一行使用 sizeof 运算符来计算 courses 数组的总大小,然后将其除以单个元素的大小,以得到数组中的元素数量。

更改排序函数的参数类型

在这一步中,你将学习如何更改 sort 函数的参数类型。

  1. courses.c 文件中,找到 sort 函数定义:

    void sort(char p[], int n)
  2. 将参数类型从 char p[] 更改为 char *p[]。更新后的函数定义应如下所示:

    void sort(char *p[], int n)

    进行此更改是因为我们处理的是字符串数组(指针数组),而不是单个字符串。

修正比较和交换逻辑

在这一步中,你将学习如何修正 sort 函数中的比较和交换逻辑。

  1. sort 函数中,找到以下代码:

    if (k!= j)
    {
        tmp = p[k];
        p[k] = p[i];
        p[i] = tmp;
    }
  2. 将条件 if (k!= j) 替换为 if (k!= i)。更新后的代码应如下所示:

    if (k!= i)
    {
        tmp = p[k];
        p[k] = p[i];
        p[i] = tmp;
    }

    进行此更改是为了检查在当前迭代(由 i 索引)中是否找到了最小元素。

完成这三个步骤后,你的 courses.c 文件就可以进行编译和执行了。现在你可以进入下一步。

  1. sort 函数中,按如下方式完成 // TODO: 部分:

    {
         if (strcmp(p[j], p[k]) < 0)
         {
             k = j;
         }
    }
  2. 执行以下命令:

gcc courses.c -o courses
./courses
  1. 验证程序是否产生预期输出。
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP
✨ 查看解决方案并练习

总结

恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。