5.1.4一维数组的简单应用 History 例5-3求10个数的最小的值,并将该最小值与最前面的元素互换(最小值唯一)。 算法分析: 1.用数组a存放10个数据。inta[10]: k=0; 2.用k记录最小值的位置(下标)。 for0j=1;j<=9;j++) 3.交换a[0]与a[k的值。 if(a[j]<a[k])k=j; k=0 k=1k=1k=1k=1 k=1 k=6 k=6 k=6 k=6 12 -14 37 76 231 -36 65 -2 -31 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
5.1.4 一维数组的简单应用 例5-3 求10个数的最小的值,并将该最小值与最前面的元素互换(最小值唯一)。 算法分析: 1. 用数组a存放10个数据。 int a[10]; 2. 用k记录最小值的位置(下标)。 3. 交换a[0]与a[k]的值。 12 -14 37 2 76 231 -36 65 -2 -31 k=0 k=1 k=6 k=0; for(j=1; j<=9; j++) if(a[j]<a[k]) k=j; k=1 k=1 k=1 k=1 k=6 k=6 k=6 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]
5.1.4 一维数组的简单应用 History #include <stdio.h main() int i,j,t,a[10],k; for(i=0,i<=9;i++) scanf("%d",&a[jl); k=0: for(j=1;j<10;j++) if(a[j]<a[k])k=j; if(k!=0) {t=a[0];a[0]=ak];ak]=t} printf("最小值是:%d小n",a[O]); printf("最小值的下标为:%dn",k);
5.1.4 一维数组的简单应用 #include <stdio.h> main( ) { int i,j,t, a[10], k; for(i=0; i<=9; i++) scanf("%d", &a[j]); k=0; for(j=1; j<10; j++) if(a[j]<a[k]) k=j; if(k!=0) { t=a[0]; a[0]=a[k]; a[k]=t; } printf("最小值是: %d\n", a[0]); printf("最小值的下标为: %d\n", k); }
y5.1.4一维数组的简单应用 例5-4产生10个40,100]内的随机数,并用选择排序法按由小到大的顺序排序后输出。 #include "stdlib.h" fori=0,i<9,i++) #include "stdio.h" #include "time.h" k-i: for(j=i+1;j<10;j++) main() if(a[j]<a[k])k=j; int i,j,t,a[10],k; if(k!=i) srand(time(0)); (t=ali];a[i]=a[k];a[k]=t;) for(i=0;i<10;i++) {a]=rand(0%61+40; for(i=0;i<10;i++) printf("%5d",a[i]); printf("%5d",a[i]); printf("\n"); printf("\n"); 42::
5.1.4 一维数组的简单应用 例5-4 产生10个[40,100]内的随机数,并用选择排序法按由小到大的顺序排序后输出。 #include "stdlib.h" #include "stdio.h" #include "time.h" main( ) { int i,j,t,a[10],k; srand(time(0)); for(i=0;i<10;i++) { a[i]=rand()%61+40; printf("%5d",a[i]); } printf("\n"); for(i=0;i<9;i++) { k=i; for(j=i+1;j<10;j++) if(a[j]<a[k]) k=j; if(k!=i) {t=a[i]; a[i]=a[k]; a[k]=t;} } for(i=0;i<10;i++) printf("%5d",a[i]); printf("\n"); }
5.1.4 一维数组的简单应用 History 例5-5用顺序排序法对5个数按升序排序。 顺序排序思想:5241-8 第一轮比较:用a[0]与它后面的a[1]~a[4]比较,将小的数据放在a[0]中。 第一轮的比较结果:最小数在a[0]中。 第二轮比较:用a[1]与它后面的a[2]~a[4]比较,将小的数据放在a[1]中。 第二轮的比较结果:次最小数在a[1]中。 依次类推经过4轮比较可使数组a升序
5.1.4 一维数组的简单应用 例5-5 用顺序排序法对5个数按升序排序。 第一轮比较:用a[0]与它后面的a[1]~a[4]比较,将小的数据放在a[0]中。 第一轮的比较结果:最小数在a[0]中。 第二轮比较:用a[1]与它后面的a[2]~a[4]比较,将小的数据放在a[1]中。 第二轮的比较结果:次最小数在a[1]中。 依次类推经过4轮比较可使数组a升序。 顺序排序思想: 5 2 4 1 -8
y5.1.4一维数组的简单应用 History #include "stdio.h" #include "stdlib.h" #include "time.h" main() int i,j,t,al5]; srand(time(0)); for(i=0;i<5;i++) {a[=rand0%61+40; printf("%5d",ali]), } printf("\n"); for(i=0;i<=3,i++) for(j=i+1;j<-4;j++) if(alil<a[il)ft=alil;ali]=a[il;alil=t; for(i=0;i<5;i++)printf("%5d",a[i]); printf("\n")
5.1.4 一维数组的简单应用 #include "stdio.h" #include "stdlib.h" #include "time.h" main( ) { int i, j, t, a[5]; srand(time(0)); for(i=0; i<5; i++) { a[i]= rand()%61+40; printf("%5d",a[i]); } printf("\n"); for(i=0; i<=3; i++) for(j=i+1; j<=4; j++) if(a[j]<a[i]) {t=a[i]; a[i]=a[j]; a[j]=t; } for(i=0; i<5; i++) printf("%5d",a[i]); printf("\n"); }