冒泡排序 培訓(xùn) 卡片 短信對(duì)話 微信對(duì)話 冒泡 排序 掃一掃分享 立即制作 發(fā)布者:D&B 發(fā)布時(shí)間:2018-04-30 版權(quán)說(shuō)明:該作品由用戶自己創(chuàng)作,作品中涉及到的內(nèi)容、圖片、音樂(lè)、字體版權(quán)由作品發(fā)布者承擔(dān)。 侵權(quán)舉報(bào) H5,H5頁(yè)面制作工具序排泡冒案例引入:我們很輕易的就做好了排序。那么計(jì)算機(jī)是如何完成這一任務(wù)的呢?有五張牌,大家會(huì)如何實(shí)現(xiàn)排序呢?6卡片4卡片9卡片6卡片3卡片案例分析:4 3 6 6 94 3 6 6 9第二趟:4 6 3 6 9原始數(shù)據(jù):6 9 4 3 66 4 3 6 96 4 9 3 66 4 3 9 6第一趟:6 9 4 3 6原理:大數(shù)下沉,每連續(xù)的兩個(gè)數(shù)進(jìn)行比較,大的數(shù)下沉至底。案例分析:每趟排序需要交換幾次?每一趟排序需要比較幾次?思考一下:n個(gè)數(shù)排序需要幾趟?第四趟:3 4 6 6 9第三趟:3 4 6 6 93 4 6 6 9每趟交換次數(shù)是不固定的最多交換次數(shù):(3,4,6,6,9)第1 趟: n-1次第2 趟: n-2次…… ……第n-1 趟: 1次 最少交換次數(shù):03,4,6,6,9 每趟排序需要交換幾次呢?第1 趟: n-1次第2 趟: n-2次…… ……第n-1 趟: 1次那么每一趟排序需要比較幾次?N-1趟N個(gè)數(shù)排序需要幾趟?短信對(duì)話代碼展示:#include "stdio.h" void main() { int a[10]; int i, j, temp; printf("Please input ten numbers: \n"); for (i = 0; i < 10; i++) scanf("%d", &a[i]); for (i = 0; i < 9; i++) // 10個(gè)數(shù),10 - 1輪冒泡,每一輪都將當(dāng)前最大的數(shù)推到最后 { for (j = 0; j < 9 - i; j++) // 9 - i,意思是每當(dāng)經(jīng)過(guò)一輪冒泡后,就減少一次比較 if (a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } // 打印排序結(jié)果 for (i = 0; i < 10; i++) 小結(jié):認(rèn)真理解今天的代碼,下去多做練習(xí)和嘗試,相信大家會(huì)有更加有趣的收獲,一個(gè)小任務(wù)~大家回去想一下這個(gè)算法可以優(yōu)化嗎?可以的話,如何優(yōu)化呢?