维数组程序举例 ●例(P124例7.3)冒泡法排序 9—8—4—5 9845 845289 420589 204589 4589 0 9 第一趟第二趟第三趟第四趟第五趟 第一趟(共比较5次),大数9“沉底”,小数“浮起”; 第二趟(共比较4次),次大数8“沉底”(倒数第二位) 小数“浮起”; 如此循环,可以推之6个数需要进行5趟冒泡;那么N个数, 需要进行N一趟冒泡,并且,第趟冒泡,需要两两比较N 一次 电子科技大学通信与信息工程学院
电子科技大学通信与信息工程学院 一维数组程序举例 ⚫ 例(P124例7.3)冒泡法排序 9 8 4 5 2 0 9 8 4 5 2 0 9 8 4 5 2 9 0 8 4 5 2 09 第一趟 9 8 4 5 2 0 第二趟 第三趟 第四趟 第五趟 ⚫ 第一趟(共比较5次),大数9“沉底”,小数“浮起”; ⚫ 第二趟(共比较4次),次大数8“沉底”(倒数第二位), 小数“浮起”; ⚫ 如此循环,可以推之6个数需要进行5趟冒泡;那么N个数, 需要进行N-1趟冒泡,并且,第i趟冒泡,需要两两比较N -i次 8 4 5 2 0 09 8
冒泡法排序 要排序的数可以放在数组中(设有N个数) 用二重循环控制排序过程: 外循环控制冒泡的趟数(N-1) 内循环控制每趟冒泡需要比较的次数(N- define NUM 6 main(i ints[NUM+1]={0,9,8,4,5,2,0}; 输入n个数到s[1]~s[n] int i, 3, k for(主=1;i<=NUM-1;立++) 外循环:i从1~n-1趟 for (3=1: 3<= NUM-ii 3++) if(s[方]>s[j+11) 内循环:j从1到n-i次 tmp s[3]i s[j]>s[j+1 []=s[j+1] Y N s[j+1] tmp i 交换s[订和 for (k 1, k < NUM: k++) s[+1]的值 printf (10d s[k]) printf("\n") 输出n个数:s[1]~s[n]
电子科技大学通信与信息工程学院 冒泡法排序 ⚫ 要排序的数可以放在数组中(设有N个数) ⚫ 用二重循环控制排序过程: ⚫ 外循环i控制冒泡的趟数(N-1) ⚫ 内循环j控制每趟冒泡需要比较的次数(N-i) 输入n个数到s[1]~s[n] 外循环:i从1~n-1趟 内循环:j从1到n-i次 s[j]>s[j+1] Y N 交换s[j]和 s[j+1]的值 输出n个数:s[1]~s[n] #define NUM 6 main(){ int s[NUM+1] = {0,9,8,4,5,2,0}; int i, j, k, tmp; for (i = 1; i <= NUM-1; i++){ for (j = 1; j <= NUM-i; j++) if (s[j] > s[j+1]){ tmp = s[j]; s[j] = s[j+1]; s[j+1] = tmp; } for (k = 1; k <= NUM; k++) printf("%10d", s[k]); printf("\n"); } }