1、问问 题题 引引 出出1.1.在实际应用中,经常使用一维数组类存储相关的一组信在实际应用中,经常使用一维数组类存储相关的一组信息息如如:一个班级全体同学的单科考试成绩一个班级全体同学的单科考试成绩 一个班级全体同学的电话号码一个班级全体同学的电话号码 2.2.在实际应用中,经常需要查找某个信息是否存在在实际应用中,经常需要查找某个信息是否存在3.3.在实际应用中,经常需要对信息进行排序处理在实际应用中,经常需要对信息进行排序处理本次课将介绍两种常用的查找和排序的方法本次课将介绍两种常用的查找和排序的方法若要存储一个班级两科以上的开始成绩该怎么办若要存储一个班级两科以上的开始成绩该怎么办?这就是
2、本次课要研究的一个问题这就是本次课要研究的一个问题:二维数组二维数组主主 要要 内内 容容5.3 5.3 顺序查找顺序查找目的要求目的要求复习思考题复习思考题5.4 5.4 冒泡排序冒泡排序5.5.2 5.5.2 访问数组元素访问数组元素5.5.3 5.5.3 用数组存数据用数组存数据5.5 5.5 二维数组二维数组5.5.1 5.5.1 定义数组定义数组5.3 5.3 顺序查找顺序查找(1)(1)查找是在给定的查找是在给定的数组数组中查找目标数据首次出现的中查找目标数据首次出现的位置位置 1.1.顺序查找顺序查找(2)(2)顺序查找顺序查找 从左向右把数组中的每个元素与目标进行比较,直到满足
3、从左向右把数组中的每个元素与目标进行比较,直到满足结束条结束条件件为止为止查找成功人为控制结束查找成功人为控制结束查找不成功自然结束查找不成功自然结束2.2.程序实例程序实例5.4 5.4 冒泡排序冒泡排序(1)(1)把等待排序的表用隔离墙分成有序和无序的两个子表把等待排序的表用隔离墙分成有序和无序的两个子表1.1.基本思想基本思想(2)(2)开始时有序表含开始时有序表含0 0个元素个元素,无序表含无序表含n n个元素个元素(3)(3)从远离有序表的一端开始,对无序表中的数据进行两两比较,从远离有序表的一端开始,对无序表中的数据进行两两比较,满足条件就满足条件就交换交换(3)(3)使小的元素向
4、有序表的方向移动,等所有元素比较完毕,使小的元素向有序表的方向移动,等所有元素比较完毕,最小的元素就移到了无序表靠隔离墙的那端最小的元素就移到了无序表靠隔离墙的那端(4)(4)隔离墙向无序表方向移动一个位置,这样就完成了隔离墙向无序表方向移动一个位置,这样就完成了一趟一趟冒泡排序过程冒泡排序过程(5)(5)给定含给定含n n个元素的一个序列,需要进行个元素的一个序列,需要进行n-1n-1趟冒泡排序的趟冒泡排序的过程过程 2.2.过程演示过程演示237883256初始状态初始状态237883256第一趟排序过程第一趟排序过程788823783256第二趟排序过程第二趟排序过程8237832823
5、327856第三趟排序过程第三趟排序过程7856823325678第四趟排序过程第四趟排序过程3.3.程序实例程序实例5.5 5.5 二维数组二维数组包含了行和列的数组包含了行和列的数组1.1.二维数组二维数组2.2.注意事项注意事项(1)(1)行标和列标都从行标和列标都从0开始,元素的个数是开始,元素的个数是:行数行数列数列数(2)(2)数组元素按先行后列,下标递增的顺序连续存放数组元素按先行后列,下标递增的顺序连续存放int a23;int a23;a0a000a0a011a0a022a1a100a1a111a1a122第第1行行第第2行行(3)(3)可以等效为含可以等效为含行数个行数个元
6、素的一维数组元素的一维数组a0a000a0a011a0a022a1a100a1a111a1a122等效等效a0a0a1a1a0a000a0a011a0a022a1a100a1a111a1a1225.5.1 5.5.1 二维数组的定义二维数组的定义数据类型标识符数据类型标识符 数组名数组名 行数行数列数列数;举举例例int table54;int table54;/*定义了含定义了含2020个元素的整型二维数组个元素的整型二维数组table table*/char name315;char name315;/*定义了含定义了含4545个元素的字符型二维数组个元素的字符型二维数组name name
7、*/5.5.2 5.5.2 访问数组元素访问数组元素1.1.格式格式数组名数组名 行标行标列标列标 举举例例若有定义若有定义:int int table54;table54;则:则:aa0 00 0 /*访问第一行第一个元素访问第一行第一个元素 */aa2 22 2 /*访问第三行第三个元素访问第三行第三个元素 */aa4 433 /*访问最后一个元素访问最后一个元素 */2.2.注意事项注意事项(1)(1)下标可以是任意的下标可以是任意的整型表达式整型表达式举举例例若有定义语句若有定义语句:int int table54;table54;intint i=1;i=1;intint j=2;j
8、=2;则下列都是正确的访问:则下列都是正确的访问:aa0 00 0 /*下标下标0 0是整型常量是整型常量 */aai ij j /*下标下标i,ji,j是整型变量是整型变量 */a a 2 2*i+j i+j 00 /*下标下标 2 2*i+j i+j 是算式是算式 */(2)(2)数组元素本身是变量数组元素本身是变量,也有值和地址之分也有值和地址之分举举例例若有定义语句若有定义语句:int int a32;a32;int int i=1,j=1;i=1,j=1;则下面的式子:则下面的式子:a ai ijj /*第第2 2行第行第2 2列元素的值列元素的值 */&a&ai ijj /*第第2
9、行第行第2列元素列元素的地址的地址 */(3)(3)数组名是地址常量,数组名是地址常量,a a与与&a00&a00的含义是一样的的含义是一样的5.5.3 5.5.3 用数组存数据用数组存数据1.1.数组的初始化数组的初始化数据类型标识符数据类型标识符 数组名数组名 行数行数列数列数=值列表值列表 ;举举例例若有定义语句若有定义语句:int int a23=1,2,3,4,5,6;a23=1,2,3,4,5,6;则:则:a00=1,a01=2,a02=3a00=1,a01=2,a02=3a10=4,a11=5,a12=6a10=4,a11=5,a12=6(1 1)值列表是用逗号隔开的多个值)值列
10、表是用逗号隔开的多个值(2 2)行数行数可以省略,可以省略,列数列数不可省不可省u若值个数若值个数多于多于元素个数就会发生编译元素个数就会发生编译错误错误u若值的个数若值的个数少于少于元素个数,多余的元素赋元素个数,多余的元素赋0 0值值注意事项注意事项:举举例例intint a23=1,2,3,4,5,6;a23=1,2,3,4,5,6;intint a3=1,2,3,4,5,6;a3=1,2,3,4,5,6;/*省略了行数省略了行数 */intint a23=1,2,4,5;a23=1,2,4,5;/*值的个数少值的个数少 */如:如:int a3=1,2,3,4,5int a3=1,2,
11、3,4,5,6;6;(3 3)可以)可以按行赋值按行赋值格式为二维数组初始化格式为二维数组初始化类型标识符类型标识符 数组名数组名 行数行数列数列数=值列表值列表,值列表值列表,;,;2.2.输入数据输入数据(1)(1)使用使用双重循环双重循环为数组中的元素输入数据为数组中的元素输入数据举举例例若有定义语句若有定义语句:int int a23;a23;intint i,j;i,j;则输入数据的语句是:则输入数据的语句是:for(i=0;i 2;i+)for(i=0;i 2;i+)for(j=0;j 3;j+)for(j=0;j 3;j+)scanf(“%d”,&aij);scanf(“%d”,
12、&aij);(2)(2)一般使用一般使用forfor循环循环 3.3.输出数据输出数据输出数据也使用输出数据也使用双重双重forfor循环循环 举举例例若有定义语句若有定义语句:int int a23;a23;intint i,j;i,j;则输出数据的语句是:则输出数据的语句是:for(i=0;i 2;i+)for(i=0;i 2;i+)for(j=0;j 3;j+)for(j=0;j 3;j+)printf(“%8d”,aij);printf(“%8d”,aij);printf(“n”);printf(“n”);目目 的的 要要 求求1.1.理解查找和排序的概念理解查找和排序的概念2.2.掌
13、握顺序查找和冒泡排序的原理和实现方法掌握顺序查找和冒泡排序的原理和实现方法4.4.掌握二维数组初始化的方法和注意事项掌握二维数组初始化的方法和注意事项5.5.掌握二维数组元素的引用方法掌握二维数组元素的引用方法6.6.掌握数二维组数据的输入和输出方法掌握数二维组数据的输入和输出方法3.3.掌握二维数组定义的方法掌握二维数组定义的方法复习思考题复习思考题说明:题目前面的说明:题目前面的*代表问题的重要程度代表问题的重要程度*5.5.定义二维数组的格式是什么定义二维数组的格式是什么?初始化的格式是什么初始化的格式是什么?*6.6.定义二维数组应该注意什么定义二维数组应该注意什么?*7.7.如何为二维数组输入和输出数据如何为二维数组输入和输出数据?*1.1.二维数组的格式是什么二维数组的格式是什么?使用时要注意什么?使用时要注意什么?*2.2.查找和排序各自的含义是什么?查找和排序各自的含义是什么?*3.3.顺序查找的基本思想是什么?顺序查找的基本思想是什么?*4.4.冒泡排序的基本思想是什么?冒泡排序的基本思想是什么?