文件名称:分析说明-C语言课件(精华版)
文件大小:9.03MB
文件格式:PPT
更新时间:2024-05-14 19:19:49
C,课件
分析说明: 1) 将待排序的数据放入一维数组中; 2) 相邻两数比较: a[j]>a[j+1]进行交换, 保证a[j]为较小的数。 3) 第一轮: 6个数, j=1~5, 循环5次, 找出最大数, 放在最后。 4) 第二轮: 5个数, j=1~4, 循环4次, 找出次大数, 放在最大数前。 5) 余此类推, 经过5轮, 将6个数排序输出。 所以: 外循环为 i=1~5, 内循环为: j=1~6-i 即: for ( i=1; i<=5 ; i++) for ( j=0; j<6-i; j++) if ( a[j]>a[j+1]) { a[j] a[j+1] } 再看在每遍扫描中,相邻两数组元素的比较次数。 当i=1时,j=1,2,…,n-i。n=6时,比较5次之后a[6]中有一个最小数到达,这时a[6]不必再参与比较了。 因此在第二遍搜索时,i=2, i=1,2,…,n-i,即j=1,2,3,4。比较4次之后次小的一个数到达了a[5]。这时a[5]不必再参与比较了。 因此,i=3时,j=1,2,3;i=4时,j=1,2;i=5时,j=1。 为了表述方便,定义以下3个变量: n —— 待排序的数的个数,这里 n=6 i —— 扫描遍数,i=1,2,…,n-1 j —— 第i遍扫描待比较元素的下标,j=1,2,…,n-i