Phtyon編程【相鄰比較的冒泡排序】_第1頁
Phtyon編程【相鄰比較的冒泡排序】_第2頁
Phtyon編程【相鄰比較的冒泡排序】_第3頁
Phtyon編程【相鄰比較的冒泡排序】_第4頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Phtyon編程【相鄰比擬的冒泡排序】如果按照得分高那么名次靠前的原那么,需要將io位選手的最終得 分按照從高到低進(jìn)行排序,那么計(jì)算機(jī)是如何完成對選手成績的排 序呢?在程序設(shè)計(jì)中,冒泡排序是比擬常見的一種排序算法。下面, 一起來探究該算法的實(shí)現(xiàn)過程。通過本節(jié)的學(xué)習(xí),你將掌握以下技了解冒泡排序的基本概念。理解冒泡排序算法過程的執(zhí)行過程。學(xué)會(huì)用冒泡排序進(jìn)行數(shù)據(jù)的升序或降序排序。.冒泡排序算法的執(zhí)行過程所謂冒泡排序,就是從初始位置開始,每次對相鄰兩個(gè)數(shù)據(jù)進(jìn) 行比擬,如順序無誤那么保持位置不變,順序錯(cuò)誤那么交換位置,不斷 進(jìn)行下一次比擬,直至數(shù)據(jù)順序調(diào)整完畢。(1)觀察冒泡排序的基本過程。以對9、8、

2、3、1、2從小到大排序?yàn)槔瑑奢喢芭菖判蜻^程如 圖所示。根據(jù)下列圖,推演冒泡排序的全部過程。第一輪排序:當(dāng)前序列:9, 8, 3, 1, 2第一次:8, 9, 3, 1, 2冤二次:& 3, 9, 1, 2 第三次:8, 3, 1, 9, 2第四次:8, 3, 1, 2, 9本次結(jié)果:8 3, 1, 2, 9第二輪排序:當(dāng)前序列:8, 3, 1, 2, 9第一次:3, 8, 1, 2, 9第二次:3, 1, 8, 2, 9第三次:3, 1, 2, 8, 9本次結(jié)果:3, L 2, 8, 9討論如何進(jìn)行第3輪比擬呢?(2)分析冒泡排序的基本規(guī)律。觀察并分析冒泡排序的規(guī)律,大家一起交流提供。例如,

3、排序時(shí)從數(shù)據(jù)某一端開始,對相鄰數(shù)據(jù)進(jìn)行兩兩比擬; 比擬后的數(shù)據(jù)根據(jù)排序規(guī)那么進(jìn)行交換或保持原位置不變;如果有n 個(gè)數(shù)參與排序,第1輪比擬次數(shù)為n-1次,等等。討論n個(gè)數(shù)進(jìn)行冒泡排序,除第1輪比擬外,每輪比擬需要n-1次 嗎?一共需要比擬多少輪?通過觀察分析,我們會(huì)發(fā)現(xiàn)冒泡排序每一輪比擬結(jié)束后至少有 一個(gè)數(shù)到達(dá)相應(yīng)位置。從上述例子來看,第1輪比擬結(jié)束后,最大 數(shù)9到達(dá)最右側(cè);第2輪比擬從第1個(gè)位置重新開始,結(jié)束后,次大 數(shù)8(本輪比擬中的最大數(shù))到達(dá)從右側(cè)J數(shù)第2個(gè)位置。依次類推, 完成數(shù)據(jù)排序。.編寫冒泡排序程序進(jìn)行實(shí)驗(yàn)通過使用雙重循環(huán),很容易實(shí)現(xiàn)冒泡排序的程序設(shè)計(jì):用外層 循環(huán)控制比擬輪次,

4、用內(nèi)層循環(huán)控制每輪內(nèi)的數(shù)據(jù)比擬次數(shù);每次 比擬后可顯示比擬結(jié)果,每輪比擬后顯示當(dāng)前結(jié)果。通過排序?qū)嶒?yàn) 的過程數(shù)據(jù),會(huì)直觀地看出整個(gè)冒泡排序的過程。實(shí)驗(yàn)中,可用 “#”臨時(shí)屏蔽每次比擬后的結(jié)果顯示,直觀觀察所有輪次的比擬 過程。1 s = 9,8,7,6,53,3,2,1# 9個(gè)測試數(shù)據(jù)存儲(chǔ)在s0-s8#控制比擬輪數(shù)# 9個(gè)測試數(shù)據(jù)存儲(chǔ)在s0-s8#控制比擬輪數(shù)2 print(參與排序的數(shù)據(jù):”,s)3 for k in range(0 (len(s) - 1):456789for i in range(0; (len(s) - k) - 1):# 每輪比擬次數(shù)if (si s(i + 1):#

5、判斷相鄰兩數(shù)值的大小I si, s(i + 1) = s(i + 1), si #符合判斷條件情況,交換位置printed, i + 1,輪比擬結(jié)果:,s) #顯示比擬過程print(j k + 1,輪比擬結(jié)果:,s) #顯示當(dāng)前結(jié)果#print()冒泡排序測試程序 TOC o 1-5 h z 參與排序的數(shù)據(jù):9, 8, 7, 6, 5, 4, 3, 2, 1 第1次比擬結(jié)果:8,9,7,6,5,4,3,2,1第2次比擬結(jié)果:8,7,9,6,5,4,3,2,1第3次比擬結(jié)果:8,7,6,9,5,4,3,2,1第4次比擬結(jié)果:8,7,6,5,9,4,3,2,1第5次比擬結(jié)果:8,7,6,5,4,

6、9,3,2,1第6次比擬結(jié)果:8,7,6,5,4,3,9,2,1第7次比擬結(jié)果:8,7,6,5,4,3,2,9,1第8次比擬結(jié)果:8,7,6,5,4,3,2,1,9第1輪比擬結(jié)果:8,7,6,5,4,3,2,1,9第1輪比擬過程參與排序的數(shù)據(jù):9, 8, 7, 6, 5, 4, 3, 2, 1 第1輪比擬結(jié)果:8,7,6,5,4,3,2,1,9第2輪比擬結(jié)果:7,6,5,4,3,2,1,8,9第3輪比擬結(jié)果:6,5,4,3,2,1,7,8,9第4輪比擬結(jié)果:5,4,3,2,1,6,7,8,9第5輪比擬結(jié)果:4,3,2,1,5,6,7,8,9第6輪比擬結(jié)果:3,2,1,4,5,6,7,8,9第7

7、輪比擬結(jié)果:2,1,3,4,5,6,7,8,9第8輪比擬結(jié)果:1,2,3,4,5,6,7,8,9所有輪次的比擬結(jié)果在程序中:在range(起始值,終止值,步長)函數(shù)中,步長默認(rèn)為1。len(參數(shù))函數(shù)用于返回參數(shù)的長度,參數(shù)可以是字符串、元 組、列表等。外層循環(huán)中,比擬輪次的循環(huán)變量不大于排序元素個(gè)數(shù)。注 意通過減1來調(diào)整。在內(nèi)層循環(huán)中,因?yàn)殡S著輪次增加,每輪需要比擬的數(shù)據(jù)越 來越少,所以用len(s)-k-l調(diào)整循環(huán)終值。本程序運(yùn)用了測試數(shù)據(jù),更容易理解,在實(shí)踐打分時(shí)可更換 為成績列表。討論.用測試數(shù)據(jù)運(yùn)行程序有什么好處?.如何刪除測試數(shù)據(jù),為選手得分排序?.用冒泡排序的降序方式為選手成績排

8、序冒泡排序不僅可以升序排序,通過修改比擬運(yùn)算符,還可以進(jìn) 行降序排序。參考以下程序,請對選手成績從高到低進(jìn)行排序。s = 5,3,6,0,4,1,7,5,9.63.7,7,2,8,6,6.3,9.2 # 選手成績列表for k in range(0, len(s) - 1):for i in range(len(s) - k - 1):I if (si (len(s) - 1):for i in range(len(s) - k) - 1):if (si si + 1):#判斷相鄰兩數(shù)值的大小si, si + 1 = si + 11si #小數(shù)交換到后面位置 ci, ci + 1 = ci + 1, ci # 編號同步交換for i in range(0 len(s):print(第%的 得分:%.2f 選手:s” %(i+l,si,ci)編號對應(yīng)程序 prin”第%d 名 得分:. 2f 選手:s - %(i+l, si, ci) 語句中采用了輸出格式的設(shè)置。%f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論