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

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

时间:2024-11-02 15:46:50浏览次数:4  
标签:数列 代码 元素 2024 2025 数组 序列 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语言的选择控制结构主要通过ifswitch?:(三元运算符)来实现。下面简要但全面地介绍这些控制结构:

  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小时

标签:数列,代码,元素,2024,2025,数组,序列,20241420,排序
From: https://www.cnblogs.com/vincent2077/p/18522094

相关文章

  • 20241029每日一题洛谷P1024
    普及-每日一题洛谷P1024有形如:\(ax^3+bx^2+cx+d=0\)这样的一个一元三次方程。给出该方程中各项的系数(\(a,b,c,d\)均为实数),并约定该方程存在三个不同实根(根的范围在\(-100\)至\(100\)之间),且根与根之差的绝对值\(\ge1\)。要求由小到大依次在同一行输出这三个实......
  • 源鲁杯2024[Round 3] CheckImg
    新思路:十六进制错位恢复新知识:DNA编码下载文件,是一张图片,010、属性、pngcheck都没有发现信息,用stegslove打开查看,在red0通道发现图片下面有明显的隐写,后面的green0有提示(这图片真的好大,一整个屏幕看不到完整的)Green0通道的整句话应该是attentiontodetails,先存一下red0的......
  • 2024.11.02模拟赛
    挂了至少30分!!不——开——心——钢哥说,大家要休息好,于是模拟赛晚点,变成了3小时3道题。T1打的正解(但没调出来版),T2T3打的暴力(但全挂了版),预计总分120+,但实际总分80。小小总结一下:昨晚多睡了一小时,今天思路确实感觉更清晰了(但也有可能是因为题目不难……)。但今天时间没分配......
  • 20222423 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    1.实验内容一、恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;(2)使用超级巡警脱壳机等脱壳软件......
  • 2024系统架构师---必考软件架构风格
    前言        软件架构设计的一个核心问题是能否使用重复的软件架构模式,即能否达到架构级别的软件重用。也就是说,能否在不同的软件系统中,使用同一架构。基于这个目的,学者们开始研究和实践软件架构的风格和类型问题。        软件架构风格是描述某一特定应......
  • 20222427 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    1.实验内容1.1本周学习内容学会了有关恶意代码分析的技术的基础知识,包括静态分析与动态分析。尝试运用静态分析方法去实现一些目的行为。学习了有关于信息收集的有关知识,包括相应的定义、收集方式以及实现收集的技术。1.2实验内容恶意代码文件类型标识、脱壳与......
  • 2024 NOIP 游记
    酥香莲影·以世荷花酥之香甜甘美,不在于其外表的雅致端庄,而在于内里酥心藏匿,纯净高洁。9.13下午到机房后\(miaomiao\)问了下我们的刷题情况,速度如何,暑假讲的知识点写的怎么样了。然后说了下高二的等考完\(CSP\)初赛就开始集训,我们则先巩固好高一基础,等国庆放假回来再集训,......
  • 20222424 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    202224242024-2025-1《网络与系统攻防技术》实验四实验报告1.实验内容恶意代码文件类型标识、脱壳与字符串提取。使用IDAPro静态或动态分析,寻找特定输入,使其能够输出成功信息。分析恶意代码样本rada,并撰写报告。取证分析实践——Windows2000系统被攻破并加入僵尸网络2......
  • 荣耀2025届校园招聘 AI工程师-NLP大模型 笔试
    目录1.第一题2.第二题3.第三题⏰时间:2024/10/09......
  • 阿里国际2025届校园招聘 0826算法岗笔试
    目录1.第一题2.第二题3.第三题⏰时间:2024/08/26......