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
※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演算法思考