第5章数组 在冒泡排序的过程中,较大数总是往上(地址递 增的方向)移动,就像水中气泡逐步往上冒出 样,因而称为冒泡排序。 显然,冒泡排序总是比较相邻两个数,经过 趟排序后,找出当前数中的最大数放在最后。 如果对N个数排序,需要经过N-1趟冒泡排序。 第1趟找N个数中的最大数,要两两比较N-1次;第2趟 找剩下N-1个数中的最大数,要进行N-2次比较;依此 类推,第k趟找N-k+1个数中的最大数,要进行Nk次比 较;最后一趟找剩下的两个数的最大数,比较1次 Ba
第5章 数组 在冒泡排序的过程中,较大数总是往上(地址递 增的方向)移动,就像水中气泡逐步往上冒出 一样,因而称为冒泡排序。 显然,冒泡排序总是比较相邻两个数,经过一 趟排序后,找出当前数中的最大数放在最后。 如果对N个数排序,需要经过N-1趟冒泡排序。 第1趟找N个数中的最大数,要两两比较N-1次;第2趟 找剩下N-1个数中的最大数,要进行N-2次比较;依此 类推,第k趟找N-k+1个数中的最大数,要进行N-k次比 较;最后一趟找剩下的两个数的最大数,比较1次
第5章数组 main i int a[1o /*定义a数组用来存放10个数据米/ int 1, ], t for(i=0;i<=9;i++) scanf("%d,",&a[i]);/*对数组中每个数据输入值*/ printf("Ⅶn") for(i=0;i=8;i++) /*用来代表排序的趟数* for(j=0;j9-i;j+)/*j用来表示每一趟相邻两 个数要比较的次数* Ba
第5章 数组 main( ) { int a[10]; /*定义a数组用来存放10个数据*/ int i,j,t; for(i=0;i<=9;i++) scanf("%d, ",&a[i]); /*对数组中每个数据输入值*/ printf("\n"); for(i=0;i<=8;i++) /*i用来代表排序的趟数*/ for(j=0;j<9-i;j++) /*j用来表示每一趟相邻两 个数要比较的次数*/
第5章数组 if(alj]>alj+l]) {t=a[j;a[j=a[j+1];a[j+1]=t; /*相邻两 个数据互换米/ for(i=0;i<=9;i++) printf(%d a 程序运行情况如下: 55,2,6,4,32,12,9,73,26,37,κ(输入10个数据, 代表回车键) 2,4,6,9,12,26,32,37,55,73, Ba
第5章 数组 if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;} /*相邻两 个数据互换*/ for(i=0;i<=9;i++) printf("%d, ",a[i]);} 程序运行情况如下: 55,2,6,4,32,12,9,73,26,37,↙ (输入10个数据, ↙代表回车键) 2,4,6,9,12,26,32,37,55,73
第5章数组 5.2二维数组的定义和使用 5.2.1二维数组的定义 实际问题中有很多量是二维的或多维的,因此C语言允许构 造多维数组。多维数组元素有多个下标,以标识它在数组中 的位置,所以也称为多下标变量。本小节只介绍二维数组 多维数组可由二维数组类推而得到。前面介绍的数组只有 个下标,称为一维数组,其数组元素也称为单下标变量。C 语言中的数组可以有多个下标,需要两个下标才能标识某个 元素的数组称为二维数组。二维数组经常用来表示按行和列 格式存放信息的数值表。要识别表中某个特定的元素,必须 指定两个下标。习惯上,第一个下标表示该元素所在行,第 个下标表示该元素所在列。 二维数组定义的一般形式是: 类型说明符数组名[整型常量表达式1][整型常量表达式2]; Ba
第5章 数组 5.2 二维数组的定义和使用 5.2.1二维数组的定义 实际问题中有很多量是二维的或多维的, 因此C语言允许构 造多维数组。多维数组元素有多个下标, 以标识它在数组中 的位置,所以也称为多下标变量。 本小节只介绍二维数组, 多维数组可由二维数组类推而得到。前面介绍的数组只有一 个下标,称为一维数组, 其数组元素也称为单下标变量。C 语言中的数组可以有多个下标,需要两个下标才能标识某个 元素的数组称为二维数组。二维数组经常用来表示按行和列 格式存放信息的数值表。要识别表中某个特定的元素,必须 指定两个下标。习惯上,第一个下标表示该元素所在行,第 二个下标表示该元素所在列。 二维数组定义的一般形式是: 类型说明符 数组名[整型常量表达式1][整型常量表达式2];
第5章数组 其中,整型常量表达式1表示第一维下标的长度,整型常量表 达式2表示第二维下标的长度。 例如inta[3][4] 定义a数组是一个3×4(3行4列)的整型二维数组。下图51 表示了此数组,可以看到,第一个下标的范围是0~2,第二 个下标的范围是0~3。二维数组是按先行后列的顺序在内存 中线性排列的。二维数组在概念上是二维的,即是说其下标在 两个方向上变化,下标变量在数组中的位置也处于一个平面 之中,而不是象一维数组只是一个向量。但是,实际的硬件 存储器却是连续编址的,也就是说存储器单元是按一维线性 排列的。如何在一维存储器中存放二维数组,可有两种方式 :一种是按行排列,即放完一行之后顺次放入第二行。另 种是按列排列,即放完一列之后再顺次放入第二列。在C语 言中,二维数组是按行排列的。在图5.1中,按行依次存放, Ba
第5章 数组 其中,整型常量表达式1表示第一维下标的长度,整型常量表 达式2 表示第二维下标的长度。 例如 int a[3][4]; 定义a数组是一个3×4(3行4列)的整型二维数组。下图5—1 表示了此数组,可以看到,第一个下标的范围是0~2,第二 个下标的范围是0~3。二维数组是按先行后列的顺序在内存 中线性排列的。二维数组在概念上是二维的,即是说其下标在 两个方向上变化, 下标变量在数组中的位置也处于一个平面 之中, 而不是象一维数组只是一个向量。但是,实际的硬件 存储器却是连续编址的, 也就是说存储器单元是按一维线性 排列的。 如何在一维存储器中存放二维数组,可有两种方式 :一种是按行排列, 即放完一行之后顺次放入第二行。另一 种是按列排列, 即放完一列之后再顺次放入第二列。在C语 言中,二维数组是按行排列的。 在图5.1中,按行依次存放