第七章数组 常用排序算法之-起泡法(冒泡法/气泡法)P24 有n个杂乱无序的数,要求将这n个数从小到大(或从大到小) 排序后输出。这种排序方法之所以叫“冒泡法”,是因为在排序 过程中,较小的数像气泡一样逐渐往前冒(向上冒),大的数逐 渐 向后沉,最终完成排序。 例7.4用起泡法对5个数排序(由小到大) 共需进行n-1 98888 8555 4轮 89555 第 第 5844·每一轮从第1个 开始,两两比 5594 4482 轮 轮 较,大者交换 44492 2228 到后面 第i轮从第1个 22229 第第第结 比到第n-个,要 第第第第结 次次次果 进行n次两两 次次次次果 比较
第七章 数 组 常用排序算法之------起泡法(冒泡法/气泡法) P124 有n个杂乱无序的数,要求将这n个数从小到大(或从大到小) 排序后输出。这种排序方法之所以叫“冒泡法” ,是因为在排序 过程中,较小的数像气泡一样逐渐往前冒(向上冒),大的数逐 渐 向后沉,最终完成排序。 例7.4 用起泡法对5个数排序(由小到大) 第 1 次 第 2 次 第 3 次 第 4 次 结 果 第 1 次 第 2 次 第 3 次 结 果 • 共需进行n-1 =4轮; • 每一轮从第1个 开始,两两比 较,大者交换 到后面; • 第 i轮从第1个 比到第n-i个,要 进行n-i次两两 比较。 9 8 8 8 8 8 5 5 5 8 9 5 5 5 5 8 4 4 5 5 9 4 4 4 4 8 2 4 4 4 9 2 2 2 2 8 2 2 2 2 9 第 二 轮 第 一 轮
第七章数组 一3, #define n5 main 为什么定义数组长度为6? 程序如右 int i,j, t, aN+l; 当inta6;则a数组有 prin请输入5个数:);|2(12,213,14,a5 for(i=1;<=N;i++) 这6个元素,因为本例中为了 scanf(%d", &aiD; for(i=1;<=N-1;i++) 符合人们的习惯,对a0不用, for〔j=1j<=N-i;j++) 只用a[到a5l if(a[jl>alj+ID i taj; a[jF=a[j+1]; +1t; for(i=l; K<=N; i++) printf("%d, aiD;
第七章 数 组 #define N 5 main() { int i , j, t, a[N+1]; printf(“请输入5个数:”); for (i=1;i<=N;i++) scanf("%d" ,&a[i]); for (i=1;i<=N-1;i++) for (j=1;j<=N-i;j++) if (a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } for (i=1;i<=N;i++) printf("%d ,a[i]); } 程 序 如 右 为什么定义数组长度为6? 当int a[6]; 则a数组有 a[0],a[1],a[2], a[3], a[4], a[5] 这6个元素, 因为本例中为了 符合人们的习惯,对a[0]不用, 只用a[1]到a[5]
第七章数组 一3, ②选择法 从算法优化的角度对“冒泡法”进行改 进。 冒泡法每一轮都要将数组中的数两两比 较并根据大小交换之—效率低。 选择法改进处:两两比较后并不马上交 换,而是找到最小数后记下其下标。在 轮比较完毕后,再将最小的数一次交 换到位。一比较次数不变,交换次数 减少
第七章 数 组 l 从算法优化的角度对“冒泡法”进行改 进。 l 冒泡法每一轮都要将数组中的数两两比 较,并根据大小交换之——效率低。 l 选择法改进处:两两比较后并不马上交 换,而是找到最小数后记下其下标。在 一轮比较完毕后,再将最小的数一次交 换到位。——比较次数不变,交换次数 减少
第七章数组 程序如下:从左到右依次从小到大排放 defined 6 maino int i,j, t,p,a[N]={0,5,10,-7,3,7 for(i=0; K<N-1; i++) or〔+1Nj++) if (atp]aDD p=j; it=alplap]=a; a=t; 1 for(=0; K <N; i++) printf( %d a0) printf( In);
第七章 数 组 从左到右依次从小到大排放 #define N 6 main() { int i,j,t, p ,a[N] ={0,5,10,-7,3,7}; for (i=0;i<N-1;i++) { p=i; for (j=i+1;j<N;j++) if (a[p]>a[j]) p=j; if(p!=i) { t=a[p];a[p]=a[i]; a[i]=t; } } for (i=0;i<N;i++) printf("%d " ,a[i]); printf("\n"); }
第七章数组 +22 72二维数组 72.1二维数组的定义和引用 二维数组的定义形式为蕌 类型标识符数组名[常量表达式][常量表达式]; 蕌例如,inta[3][2]; 表示数组a是一个3×2(3行2列)的数组,共有6个元素, 每个元素都是int型
第七章 数 组 7.2 二 维 数 组 7.2.1 二维数组的定义和引用 二维数组的定义形式为 类型标识符 数组名[常量表达式][常量表达式]; 例如, int a[3][2]; 表示数组a是一个3×2(3行2列)的数组, 共有6个元素, 每个元素都是int型