python冒泡算法_python_冒泡算法
什么是冒泡算法?
-- 像魚吐泡泡一樣,每次都是向上冒出一個水泡
如何邏輯整理?
-- 先拿第一個值和剩下的值,一一比較,必能找到最大的或者最小的
-- 比較過程中,第一個值小于剩下的某個值,交換位置,依次比較到最后,最大的一個肯定在最前面,找最大
-- 比較過程中,第一個值大于剩下的某個值,交換位置,依次比較到最后,最小的一個肯定在最前面,找最小
-- 每次找出最大的值或者最小的值,比較循環就減少一次,當只剩下一個元素時候,就結束了
從第幾個值來看,按第幾個值比較,忽略列表本身的索引值
# !/usr/bin/python3
def buble(fish):
'''冒泡算法'''
for j in range(1, len(fish)): # 從第一個開始根后面的比較
for i in range(len(fish)-j): # 每遍歷找到最大或最小的放在第一位,然后再次循環剩下的元素
if fish[i] > fish[i+1]: # 如果第i個元素大i+1,互換位置,相當于找到最小的放最前面
# 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)
利用列表本身的索引值進行比較,不更好更容易理解么?
# !/usr/bin/python3
def buble(fish):
'''冒泡算法'''
for j in range(len(fish)): # 從列表0索引開始,最后的元素就是一個,到最后一個元素,列表已經排好,無需自己比較自己
for i in range(j + 1, len(fish)): # j位置都是已經排好了,從j+1開始比較
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] # 交互位置,相當于以上三句話
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)
記住一句話,比最大,交互位置,取最小的值,比最小,交互位置,取最大值
大于的時候,交互位置,實際上是把小的值,推到了列表最前面,
小于的時候,把大的值,推到最前面,這個才是冒泡算法最讓人困惑的地方
總結
以上是生活随笔為你收集整理的python冒泡算法_python_冒泡算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python os函数_python o
- 下一篇: mac python安装太慢_【已解决】