第5章 数组 教学PPT

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 如果已有多个元素拍序,则自右向左逐个与已排序元素进行比较,然后将已 排序元素向后移动,直到已排序元素小于下一个元素,将下一个元素插入到
第3步 小于它的后面。
• 再取下一个元素,重复上述步骤,直到所有元素都排序完毕。
第4步
5.2 一维数组
• 5.2.3 一维数组的常见操作
5、一维数组的排序—插入排序
例5-5所示。
将n个数存入数组中
i<n-1 真
数组[i]>数组[i+1]
假 假
结束
真 交换两个元素
i++
5.2 一维数组
• 5.2.3 一维数组的常见操作
5、一维数组的排序——插入排序
− 所谓插入排序法,就是每一步将一个待排序元素插入到已经排序的元素中 的适当位置,直到全部插入完毕。
9
8
3
5
2
i=1 8
• 对部分数组元素赋初值 • int b[3][4] = {{1},{4,3},{2,1,2}};
• 对全部数组元素置初值,则第一个下标可省略 • int a[ ][3] = {1,2,3,4,5,6};
5.3 二维数组
• 5.3.2 二维数组的引用
− 二维数组的引用方式同一维数组的引用方式一样,也是通过数组名和下 标的方式来引用数组元素,其语法格式如下:
5.5 进阶案例(一)
• 斐波那契数列
− 在第四章,曾用递归实现了斐波那契数列,其实用数组也可以实现。其递 归的规律为当前项是前两项的和,则可以考虑用一维数组来实现。如例512所示,用数组来计算斐波那契数列的前20项。
5.6 进阶案例(二)
• 杨辉三角
−为了大家更好的掌握数组在实际开发中的应用,接下来通过一个打印杨辉三角
• 5.2.1 一维数组的定义与初始化
− 完成数组的定义后,只是对数组中的元素开辟了一块内存空间。这时, 如果想使用数组操作数据,还需要对数组进行初始化。数组初始化的 常见的方式有三种,具体如下:
第1种 第2种 第3种
• 直接对数组中的所有元素赋值 • int i[5]={1,2,3,4,5};
• 只对数组中的一部分元素赋值 • int i[5]={1,2,3};
1、用一个已经初始化的数组对另一个数组赋值; 2、对数组进行整体输入输出; 3、数组与数组不能进行比较; 4、数组与数组不能进行运算;
5.3 二维数组
• 5.3.1 二维数组的定义与初始化
− 二维数组的定义方式与一维数组类似,其语法格式如下:
行下标
列下标
类型说明符 数组名[常量表达式1][常量表达式2];
• 对数组全部元素赋值但不指定长度 • int i[]={1,2,3,4};
5.2 一维数组
• 5.2.1 一维数组的定义与初始化
1、数组的下标是用方括号括起来,不是圆括号。 2、数组的命名同变量的命名规则相同。 3、数组定义中,常量表达式的值可以是符号常量。
5.2 一维数组
• 5.2.2 一维数组的引用
5.7 本章小结
本章主要首先讲解什么是数组,然后讲解了一维数组 的定义、初始化、引用以及数组的常见操作,然后讲 解了二维数组的相关知识,最后介绍了数组作为函数 参数,掌握好本章的内容有助于后面课程的学习。
5.2 一维数组
• 5.2.3 一维数组的常见操作
6、二分查找法
• 将数组中间位置记录,比较查找关键字与中间位置的元素,若
第1步 两者相等,查找成功,否则从中间位置将数组一分为二。
• 如果关键字大于中间位置元素,则在后一半数组中查找,否则
第2步 在前一半数组中查找。
• 重复以上过程,直到找到满足条件的记录,使查找成功,若直
• 数组的概念
在程序设计中,一组具有相同数据类型的变 量集合称为数组。
5.2 一维数组
• 5.2.1 一维数组的定义与初始化
− 一维数组指的是只有一个下标的数组,它用来表示一组具有相同类型的 数据。
− 在C语言中,一维数组的定义方式如下所示:
元素类型
数组长度
类型说明符 数组名[常量表达式];
5.2 一维数组
第3步 到子数组不存在,没有找到要查找的元素,则元素不存在。
5.2 一维数组
• 5.2.3 一维数组的常见操作
6、二分查找法
− 了解了二分查找法的原理之后,接下来用二分查找法来演示一个查找元 素的案例,如例5-7所示。
脚下留心
• 数组的非法操作
− 对于基本数据类型,相同类型的变量可以进行加减、比较运算,但对于 数组,即使是相同类型、相同大小的数组,有些操作也是非法的,具体 如下:
第五章 数组
数组的概念 二维数组
一维数组 数组作为函数参数
学习目标
3
数组的概念
一维数组
1
二维数组
掌握
数组作为函数参数
2
目录
数组的概念
一维数组
☞点击查看本小节知识架构
二维数组
☞点击查看本小节知识架构
数组作为函数参数
目录
进阶案例(一) 进阶案例(二)
本章小结
5.1 数组的概念 什么是数组?
5.1 数组的概念
5.2 一维数组
• 5.2.3 一维数组的常见操作
1、一维数组的遍历
− 在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数 组的遍历。接下来使用for循环依次遍历数组中的元素,如例5-2所示。
5.2 一维数组
• 5.2.3 一维数组的常见操作
2、一维数组的最值
− 在操作数组时,经常需要获取数组中元素的最值。接下来通过一个案例 来演示如何获得数组中的最大值,如例5-3所示。
− 在程序中,经常需要访问数组中的一些元素,这时可以通过数组名和下标来引 用数组中的元素。
− 一维数组元素的引用方式如下所示:
数组名[下标];
5.2 一维数组
• 5.2.2 一维数组的引用
数组的下标都有一个范围,即“0~[数组长度-1]” 假设数组的长度为6,其下标范围为0~5。当访问 数组中的元素时,下标不能超出这个范围,否则程 序会报错。
5.2 一维数组
• 5.2.3 一维数组的常见操作
3、一维数组的排序——选择排序
− 选择排序是通过每一趟排序过程中从待排序的记录中选择出最大(小)的 元素,将其依次放在数组的最前(后)端,来实现数组的排序。分步骤讲 解冒泡排序的整个过程,具体如下:922
2
2
8
8
3
3
3
3
3
8
5
5
min
5
5
5
8
8
min
假 结结束束
遍遍历历剩剩下下nn--ii个个元元素素
找找出出最最大大值值mmaaxx
假 mmaaxx >> 数数组组[[ii]]
真 交交换换这这两两个个元元素素
ii++++
5.2 一维数组
• 5.2.3 一维数组的常见操作
4、一维数组的排序——冒泡排序
− 在冒泡排序的过程中,不断地比较数组中相邻的两个元素,较小者向上浮, 较大者往下沉,整个过程和水中气泡上升的原理相似,接下来,分步骤讲 解冒泡排序的整个过程,具体如下:
5.3 二维数组
• 5.3.1 二维数组的定义与初始化
− 完成二维数组的定义后,需要对二维数组进行初始化,初始化二维数组 的方式有四种,具体如下:
第1种 第2种 第3种 第4种
• 按行给二维数组赋初值 • int a[2][3] = {{1,2,3},{4,5,6}};
• 将所有的数组元素按行顺序写在一个大括号内 • int a[2][3] = {1,2,3,4,5,6};
数组类型修饰符 数组名 [n1][n2]…[nn];
5.4 数组作为函数参数
• 数组作为函数参数
− 在程序中,为了方便对数组的操作,经常会定义一些操作数组的功能函数,这些函数 往往会将数组作为函数参数。
− 在数组作为函数参数时,必须要保证形参与实参的数组是相同的类型,且有明确的数 组说明,如数组维数、数组大小等。
• 依次类推,直到完成最后两个元素的排序交换,
第3步 就完成了升序排列。
5.2 一维数组
• 5.2.3 一维数组的常见操作
3、一维数组的排序——选择排序
− 了解了选择排序的原理之后,接下来通过一个案例来实现选择排序,如
例5-4所示。
将将nn个个数数存存入入数数组组中中
ii<<nn 真
假假设设数数组组[[ii]]是是最最大大值值
第2步 步相似,这样就可以将数组中第二大的数放在倒数第二个位置。
• 依次类推,持续对越来越少的元素重复上面的步骤,直到没有任何
第3步 一对元素需要比较为止。
5.2 一维数组
• 5.2.3 一维数组的常见操作
4、一维数组的排序——冒泡排序
− 了解了冒泡排序的原理之后,接下来通过一个案例来实现冒泡排序,如
9
3
5
2
i=2 3
8
9
5
2
i=3 3
5
8
9
2
i=4 2
3
5
8
9
5.2 一维数组
• 5.2.3 一维数组的常见操作
5、一维数组的排序——插入排序
• 从第1个元素开始,将其视为已排序的元素。
第1步
• 取下一个元素,与左边已排序的元素相比较,如果已排序元素大于下一个元
第2步 素,则将已排序元素向后移动。
− 了解了插入排序的原理之后,接下来通过一个案例来实现插入排序,如
例5-6所示。
将n个数存入数组中
i<n, j=i
假 结束

假 j>0&& 数组[j-1]>数组[j]
真 数组[j-1]向后移动
j--
数组[j]向前移动
i++
5.2 一维数组
• 5.2.3 一维数组的常见操作
6、二分查找法
− 除了对数组取最值、排序,有时还需要查找某一个数组元素。对于一个有 序排列的数组,如果查找某一个元素,我们通常用二分查找法,又称为折 半查找。其算法思想如下:
5.2 一维数组
• 5.2.3 一维数组的常见操作
4、一维数组的排序——冒泡排序
• 从第一个元素开始,将相邻的两个元素依次进行比较,直到最后两 个元素完成比较。如果前一个元素比后一个元素大,则交换它们的
第1步 位置。整个过程完成后,数组中最后一个元素自然就是最大值。
• 除了最后一个元素,将剩余的元素继续进行两两比较,过程与第一
的案例来加深对数组的理解。如例5-13所示。
杨辉三角的前10行样式如下所示。 1 11 121 1331 14641 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1
min
2
9
min
9
9
9
第一轮 第二轮 第三轮 第四轮
5.2 一维数组
• 5.2.3 一维数组的常见操作
3、一维数组的排序——选择排序
• 在数组中选择出最小的元素,将它与0角标元素交
第1步 换,即放在开头第1位。
• 除0角标元素外,在剩下的待排序元素中选择出最
第2步 小的元素,将它与1角标元素交换,即放在第2位。
数组名[下标][下标];
5.3 二维数组
• 5.3.3 二维数组的应用
− 熟悉了二维数组的定义和引用,接下来通过一个案例来了解二维数组 的应用,如例5-9所示。
多学一招
• 多维数组
− 在计算机中,除一维数组和二维数组外,还有三维,四维,……等多 维数组,它们用在某些特定程序开发中,多维数组的定义与二维数组 类似,其语法格式具体如下:
相关文档
最新文档