冒泡法排序(续) 16 从上述过程可以看到:n个数要比较n-1趟,而 在第j趟比较中,要进行n-j次两两比较。 for (=0; K<N; i++) 输入ali for〔j=1:j<N;j++) for (i=0; K<N-j; i++) I>ai+1 山与ai+1交换 输出a|0~aN-1 冒泡法排序 2021-2-24
2021-2-24 16 冒泡法排序 for (i=0; i<N; i++) 输入a[i] for (j=1;j<N; j++) for (i=0; i<N-j; i++) a[i]>a[i+1] T F a[i]与a[i+1]交换 输出a[0]~a[N-1]
17 definer 6 #include<stdio.h> void main( 程序运行情况如下 i int a n 3756804 int i,j, t; 035678 for(i=0; K<N; 1++) scanf(%od", &aiD; for(j=1;j<=N-l;j++)/控制比较的趙数* for(i=0;iN-j;计+)/两两比较的次数 if(aisai+lD Rt=a;a=ai+l;ai+ll=t;) printf( The sorted numbers: n;
2021-2-24 17 /*控制比较的趟数 */ /*两两比较的次数 */ 程序运行情况如下: 3 7 5 6 8 0 0 3 5 6 7 8
例74】定位比较交换法排序从小到大0 以6个数:3、7、5、6、8、0为例。 思路 第一趟:将第一个数依次和后面的数比较,如 果后面的某数小于第一个数,则两个数交换,比较 结束后,第一个数则是最小的数。 第二趟:将第二个数依次和后面的数比较,如 果后面的某数小于第二个数,则两个数交换,比较 结束后,第二个数则是次小的数; 2021-2-24
2021-2-24 18
例74】定位比较交换法排序(续)。10 0 a[l a(21 a[3I a(4] a[51 第一趟3 680 0 不交换 7 6 8 0 不交换 7 8 不交换 7 5 6 0 不交换 0 7 6 8 交换 2021-2-24
2021-2-24 19 不交换 不交换 不交换 不交换 a[0] a[1] a[2] a[3] a[4] a[5] 第一趟 j=0 交换
例7小】定位比较交换法排序续)。20 a|0]a1a2a31a14a|5 0 5 6 8 6 2 j=3 00000 73333 55_5 6 35678 6 2021-2-24
2021-2-24 20 j=1 j=2 j=3 j=4 j=0 a[0] a[1] a[2] a[3] a[4] a[5]