當前位置:
首頁 > 知識 > Python——冒泡演算法

Python——冒泡演算法

冒泡演算法:對於要排序的序列,每次將兩個元素進行比較,如果排序錯誤則將兩者進行交換,直到完成排序。


以數列 li = [12,22,3,11,8,10] 為例:

for m in range(len(li)-1):

for n in range(m+1,len(li)):

if li[m] > li[n]:

temp = li[n]

li[n] = li[m]

li[m] = temp

print li

for n in range(1,len(li)-1):

for m in range(len(li)-n):

num1 = li[m]

num2 = li[m + 1]

if num1 > num2:

temp = li[m]

li[m] = num2

li[m + 1] = temp

print li

兩者的區別在於,前者從前往後排序,從小的值開始排序,最後排序的是大的值;

後者是從後往前排序,從大的值開始排序,最後排序的是小的值

以第二種方法進行詳細分解:

for m in range(5):

num1 = li[m]

num2 = li[m+1]

if num1 > num2:

temp = li[m]

li[m] = num2

li[m+1] = temp

print li

列表一共6個元素,需要比較5次,兩兩進行比較後,得到新的序列,最大的值排在最後一個。

for m in range(4):

num1 = li[m]

num2 = li[m+1]

if num1 > num2:

temp = li[m]

li[m] = num2

li[m+1] = temp

print li

再次進行循環,由於最後一個元素已經為最大值,只需要比較前5個,從而得到第二大的值。

以此類推,可以發現range中的值從len(li-1)開始依次減1,因此可以再套一層for循環。

for n in range(1,len(li)-1):

#n為1,2,3,4,5

#len(li)-n則為5,4,3,2,1

for m in range(len(li)-n):

num1 = li[m]

num2 = li[m + 1]

if num1 > num2:

temp = li[m]

li[m] = num2

li[m + 1] = temp

文章來自博客園


IT精品課程:http://xue.ujiuye.com/

「勤工儉學計劃」,給你一個真正0元學習IT技術的機會!

http://www.ujiuye.com/zt/qgjx/?wt.bd=zy35844tt

找工作太難?不是你不行,我們來幫你!

http://www.ujiuye.com/zt/jyfc/?wt.bd=zy35844tt

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 IT優就業 的精彩文章:

vue基礎
合併兩個排序的鏈表
使用Docker的macvlan為容器提供的橋接網路
有哪些普通人覺得很容易實現,但卻讓程序員一籌莫展的技術?
看直播,送大禮,我們不見不散!

TAG:IT優就業 |

您可能感興趣

Python LZW 演算法
用Python 實現的機器人演算法示例集合——PythonRobotics
MeanShift濾波演算法與實現
又一公鏈採用Tensority演算法
Bayesian Personalized Ranking 演算法解析及Python實現
Adaboost演算法及python實戰
Tamar Charney:重視演算法的力量
演算法:Sums In A Triangle
Facebook開源「Detectron」,用於AR研究的計算機視覺演算法!
加速AR對象分類,Facebook開源計算機視覺演算法Detectron
Deep Forest 演算法解讀
iPhone Xs 使用感測器測量深度,而 iPhone X?是通過演算法實現
用 Python 實現所有演算法!Github 星標近 5w
人工智慧–Autoencoder演算法
Machine Learning:十大機器學習演算法
Redis Scan演算法設計思想
ClickHouse如何結合自家的GNDT演算法庫CatBoost來做機器學習
sklearn調包俠之KNN演算法
Equihash演算法礦機 Z9 mini問世,又一個演算法被ASiC攻克!
分散式唯一id:snowflake演算法思考