python冒泡算法_python_冒泡算法
什么是冒泡算法?
-- 像魚(yú)吐泡泡一樣,每次都是向上冒出一個(gè)水泡
如何邏輯整理?
-- 先拿第一個(gè)值和剩下的值,一一比較,必能找到最大的或者最小的
-- 比較過(guò)程中,第一個(gè)值小于剩下的某個(gè)值,交換位置,依次比較到最后,最大的一個(gè)肯定在最前面,找最大
-- 比較過(guò)程中,第一個(gè)值大于剩下的某個(gè)值,交換位置,依次比較到最后,最小的一個(gè)肯定在最前面,找最小
-- 每次找出最大的值或者最小的值,比較循環(huán)就減少一次,當(dāng)只剩下一個(gè)元素時(shí)候,就結(jié)束了
從第幾個(gè)值來(lái)看,按第幾個(gè)值比較,忽略列表本身的索引值
# !/usr/bin/python3
def buble(fish):
'''冒泡算法'''
for j in range(1, len(fish)): # 從第一個(gè)開(kāi)始根后面的比較
for i in range(len(fish)-j): # 每遍歷找到最大或最小的放在第一位,然后再次循環(huán)剩下的元素
if fish[i] > fish[i+1]: # 如果第i個(gè)元素大i+1,互換位置,相當(dāng)于找到最小的放最前面
# temp = fish[i+1]
# fish[i+1] = fish[i]
# fish[i] = temp
fish[i], fish[i+1] = fish[i+1], fish[i] # 位置互換
return fish
if __name__ == '__main__':
fish = [600, 4, 55, 42, 11, 5, 33, 6, 8, 20, 10, 66, 99, 77, 22]
result = buble(fish)
print(result)
利用列表本身的索引值進(jìn)行比較,不更好更容易理解么?
# !/usr/bin/python3
def buble(fish):
'''冒泡算法'''
for j in range(len(fish)): # 從列表0索引開(kāi)始,最后的元素就是一個(gè),到最后一個(gè)元素,列表已經(jīng)排好,無(wú)需自己比較自己
for i in range(j + 1, len(fish)): # j位置都是已經(jīng)排好了,從j+1開(kāi)始比較
if fish[j] < fish[i]: # 大于比較,交互位置,取最小的在前面
# temp = list_1[i+1]
# list_1[i+1] = list_1[i]
# list_1[i] = temp
fish[j], fish[i] = fish[i], fish[j] # 交互位置,相當(dāng)于以上三句話
return fish
if __name__ == '__main__':
fish = [600, 4, 55, 42, 11, 5, 33, 6, 8, 20, 10, 66, 99, 77, 22]
result = buble(fish)
print(result)
記住一句話,比最大,交互位置,取最小的值,比最小,交互位置,取最大值
大于的時(shí)候,交互位置,實(shí)際上是把小的值,推到了列表最前面,
小于的時(shí)候,把大的值,推到最前面,這個(gè)才是冒泡算法最讓人困惑的地方
總結(jié)
以上是生活随笔為你收集整理的python冒泡算法_python_冒泡算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python os函数_python o
- 下一篇: 处理器指令编码可重定义的方法_从零开始设