• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
vincent2077
博客园    首页    新随笔    联系   管理    订阅  订阅

学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第六周学习总结

学期(2024-2025-1) 学号(20241420) 《计算机基础与程序设计》第六周学习总结

作业信息

这个作业属于哪个课程 <班级链接>(如[https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))
这个作业要求在哪里 <作业要求链接>(https://www.cnblogs.com/rocedu/p/9577842.html#WEEK06)
这个作业的目标 <计算机科学概论(第七版)第7章 《C语言程序设计》第5章>

教材学习内容总结

C语言的选择控制结构主要通过if、switch和?:(三元运算符)来实现。下面简要但全面地介绍这些控制结构:

  1. if语句:

    • 基本形式:if语句用于在满足特定条件时执行一段代码。
    • 语法:
      if (条件) {
          // 条件为真时执行的代码
      } else {
          // 条件为假时执行的代码
      }
      
    • 可以嵌套if语句,也可以使用else if来检查多个条件。
  2. switch语句:

    • switch语句用于根据变量的值执行不同的代码块。
    • 语法:
      switch (变量) {
          case 值1:
              // 当变量等于值1时执行的代码
              break;
          case 值2:
              // 当变量等于值2时执行的代码
              break;
          // ...
          default:
              // 如果变量的值不匹配任何case时执行的代码
      }
      
    • break语句用于退出switch结构,防止执行下一个case。
  3. 三元运算符(?:):

    • 三元运算符是一种简洁的选择结构,用于在两个值之间选择。
    • 语法:
      条件 ? 表达式1 : 表达式2;
      
    • 如果条件为真,则返回表达式1的值,否则返回表达式2的值。

这些选择控制结构是C语言中实现条件逻辑的基础,允许程序根据不同的条件执行不同的代码路径。

数组:

  1. 定义:
    数组是一个容器对象,它存储了具有相同类型的一系列元素,并且可以通过索引来访问这些元素。

  2. 元素类型:
    数组中的所有元素必须是相同的数据类型,例如整型、浮点型、字符型等。

  3. 索引:
    数组中的每个元素都可以通过一个唯一的索引来访问,索引通常是从0开始的整数。

  4. 大小:
    数组的大小是在声明时确定的,这意味着一旦创建了数组,其包含的元素数量就固定了。在某些编程语言中,如C和C++,数组的大小是静态的,而在其他语言如Python中,数组(更准确地说是列表)的大小是动态的。

  5. 声明:
    在不同的编程语言中,数组的声明方式不同。例如,在C语言中,可以这样声明一个整型数组:

    int myArray[5]; // 声明一个包含5个整数的数组
    
  6. 访问和修改:
    可以通过索引来访问和修改数组中的元素。例如,在C语言中:

    myArray[0] = 10;  // 将数组的第一个元素设置为10
    int value = myArray[0];  // 读取数组的第一个元素
    
    

排序算法:

1. 选择排序(Selection Sort)

原理:

  • 选择排序的基本思想是:遍历数组,每次从未排序的部分找出最小(或最大)的元素,存放到排序序列的起始位置,直到整个序列有序。
  • 它重复地走访过列表,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

步骤:

  1. 找到未排序部分的最小元素。
  2. 将其与未排序部分的第一个元素交换位置。

时间复杂度:O(n^2),其中n是数组的长度。

2. 泡沫排序(Bubble Sort)

原理:

  • 泡沫排序的基本思想是:通过重复遍历待排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
  • 遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。

步骤:

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。

时间复杂度:O(n^2),其中n是数组的长度。

3. 快速排序(Quick Sort)

原理:

  • 快速排序的基本思想是:通过一个分治法(Divide and Conquer)的过程,将一个序列分为两个子序列,使得其中一个子序列的所有数据都比另一个子序列的所有数据要小,然后再按此方法对两个子序列分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

步骤:

  1. 选择一个元素作为"基准"(pivot)。
  2. 重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。
  3. 递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。

时间复杂度:平均O(n log n),最坏O(n^2)。

4. 插入排序(Insertion Sort)

原理:

  • 插入排序的基本思想是:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
  • 插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序)。

步骤:

  1. 从第一个元素开始,该元素可以认为已经被排序。
  2. 取出下一个元素,在已经排序的元素序列中从后向前扫描。
  3. 如果该元素(已排序)大于新元素,将该元素移到下一位置。
  4. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。
  5. 将新元素插入到该位置后。
  6. 重复步骤2~5。

时间复杂度:O(n^2),其中n是数组的长度。

这些排序算法各有优缺点,选择排序和泡沫排序在数据量较大时效率较低,而快速排序在平均情况下效率较高,插入排序在数据量较小或部分有序的情况下效率较高。

AI学习











代码调试中的问题和解决过程

1.问题:调试位运算程序时用人力计算正确成本很高,检验效率慢
解决方法:在代码中加入一行输出答案,就可以直接知晓答案再输入检验程序了
2.问题:伪随机数的解决
解决方法:加入srand()函数
3.问题:scanf输入时会先空一行结果,再对下一行执行命令
解决问题:scanf使用时多加了换行命令“\n”,删去即可

  • 计划学习时间:10小时

  • 实际学习时间:9小时

posted @ 2024-11-02 15:56  任与生  阅读(18)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3