C语言进阶之——数组

发布时间:2026/9/19 11:41:04
C语言进阶之——数组 今天系统学习了C语言一维数组相关知识熟悉数组基础操作重点弄懂冒泡排序和选择排序两种基础算法在这里整理知识点分享给大家。一、一维数组基础数组定义数组可以存储一组数据类型相同的数据所有元素在内存里连续存放。书写格式数据类型 数组名[元素数量];注意方括号内的元素数量只能写常量不能直接使用变量。数组元素访问读取、修改元素格式数组名[下标]数组下标从0开始有效区间是 0 ~ 元素个数-1。下标可以填写常量、变量或者表达式。千万不要访问超出范围的下标也就是数组越界程序会出现无法预料的错误。计算数组长度不用手动去数元素个数可以借助sizeof自动计算int len sizeof(a)/sizeof(a[0]);sizeof(a) 获取整个数组占用的总字节sizeof(a[0]) 代表单个元素占用字节两者相除得到元素总数。数组初始化完整初始化int a[5]{1,2,3,4,5};部分初始化没有赋值的元素默认自动置0int a[5]{1,2,3};省略数组长度编译器根据初始化内容自动判定长度int a[]{1,2,3,4,5};注意数组没办法整体赋值如果需要修改所有元素只能通过循环逐个操作。二、数组常见基础应用通过循环读取控制台输入的数据存入数组也能循环遍历打印全部元素遍历数组查找最大值、最小值同时记录最值所在的下标数组逆置交换数组前后对应的元素循环条件设置为 i len/2。三、冒泡排序核心原理不断对比相邻的两个元素如果大小不符合排序要求就交换二者。每一轮循环结束后未排序区域中最大的元素会排到末尾。外层循环控制一共需要多少轮排序总共执行 len-1 轮内层循环负责相邻元素对比交换。每一轮结束后末尾多出一个有序数据所以内层循环边界要减去已经完成排序的轮次。for(j 0; j len-1; j){for(i 0; i len-1-j; i){if(a[i] a[i1]){int tmp a[i];a[i] a[i1];a[i1] tmp;}}}四、选择排序核心原理先暂定当前位置的元素是最小值接着向后遍历还没有排序的数据找到真正最小值的下标。一轮遍历结束后把最小值交换到当前位置。简单区分两种排序冒泡排序会频繁交换相邻元素选择排序每一轮最多只交换一次。外层循环依次确定数组每一个位置最终存放的数据内层循环在未排序区间寻找最小值对应的下标for(j 0; j len-1; j){int min j;for(i j1; i len; i){if(a[i] a[min]){min i;}}if(min ! j){int tmp a[j];a[j] a[min];a[min] tmp;}}在学习冒泡排序和选择排序的过程中我们应该注意分清两层循环各自的作用外层控制排序轮次内层完成元素比较或者查找最值循环边界不能随意改动边界出错容易出现排序不完全、数组越界等问题理解两种排序各自的逻辑不要混淆代码结构。最后数组是批量处理数据非常重要的工具冒泡、选择排序也是入门算法。大家不用死记硬背代码试着一步步推演循环运行过程多敲多练更容易吃透算法逻辑。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询