C语言程序设计教程 高等教育出版社第二版 第五章 数组
算法过程:
第1趟比较后,剩5个数未排好序;两两比较5次 第2趟比较后,剩4个数未排好序;两两比较4次 第3趟比较后,剩3个数未排好序;两两比较3次 第4趟比较后,剩2个数未排好序;两两比较2次 第5趟比较后,全部排好序;两两比较1次
算法结论:对于n个数的排序,需进行n-1趟比较,第j趟比较需进行n-j次两两比较。 程序流程图:(用两层嵌套循环实现)
第 9 页 共 30 页
C语言程序设计教程 高等教育出版社第二版 第五章 数组
程序:设需排序的数有10个,定义数组大小为11,使用a[1]~a[10]存放10个数,a[0]不用。 main()
{int a[11]; /* 用a[1]~a[10], a[0]不用 */ int i,j,t; /* i,j作循环变量,t作两两比较的临时变量 */ printf(\for(i=1;i<11;i++)
scanf(\/* 输入10个整数 */ printf(\
for(j=1;j<=9;j++) /* 第j趟比较 */
for(i=1;i<=10-j; i++) /* 第j趟中两两比较10-j次 */ if (a[i] > a[i+1]) /*交换大小*/
第 10 页 共 30 页
C语言程序设计教程 高等教育出版社第二版 第五章 数组
{ t = a[i]; a[i] = a[i+1]; a[i+1] =
t; }
printf(\for(i=1;i<11;i++) printf(\}
§5.2 二维数组和多维数组
5.2.1二维数组和多维数组的概念及其定义 如果一维数组的每一个元素是类型相同的一维数组时,就形成了二维数组。
二维数组是有二个下标变量的数组。第一个下标称为行下标,第二个下标称为列下标,因此,二维数组可看成是一个二维表。
二维数组的一般定义形式为:
类型标识符 数组名[常量表达式1][常量表达式2] 二维数组的理解: 【例】:a[3][4]
第 11 页 共 30 页
C语言程序设计教程 高等教育出版社第二版 第五章 数组
二维数组a[3][4]理解为:有三个元素
a[0]、a[1]、a[2],每一个元素是一个包含4个元素的数组。
二维数组的元素在内存中的存放循序: 【例】:a[3][4]
按行存放。即:先顺序存放第一行的元素,再存放第二行的元素。
二维数组的元素a[i][j]在数组中的位置计算公式:
设有一个m×n的二维数组,元素a[i][j]在数组中的位置计算公式为: i×n+j+1 多维数组是有多个下标变量的数组。 多维数组的一般定义形式为:
类型标识符 数组名[常量表达式1][常量表达式2]…[常量表达式n] 第 12 页 共 30 页