python 冒泡演算法

2022-05-17 06:20:02 字數 1694 閱讀 4587

什麼是冒泡演算法?

-- 像魚吐泡泡一樣,每次都是向上冒出乙個水泡

如何邏輯整理?

-- 先拿第乙個值和剩下的值,一一比較,必能找到最大的或者最小的

-- 比較過程中,第乙個值小於剩下的某個值,交換位置,依次比較到最後,最大的乙個肯定在最前面,找最大

-- 比較過程中,第乙個值大於剩下的某個值,交換位置,依次比較到最後,最小的乙個肯定在最前面,找最小

-- 每次找出最大的值或者最小的值,比較迴圈就減少一次,當只剩下乙個元素時候,就結束了

從第幾個值來看,按第幾個值比較,忽略列表本身的索引值

# !/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演算法 冒泡演算法

氣泡排序的思想 每次比較兩個相鄰的元素,如果他們的順序錯誤就把他們交換位置 比如有五個數 12,35,99,18,76,從大到小排序,對相鄰的兩位進行比較 經過第一趟比較後,五個數中最小的數已經在最後面了,接下來只比較前四個數,依次類推 99,35,76,18,12 99,76,35,18,12 9...

Python氣泡排序演算法

coding utf 8 氣泡排序演算法 import random fenshu int input 請輸入考試滿分 renshu int input 請輸入考試人數 sortsre input 倒敘 正序 請選擇 y n while sortsre y and sortsre n print 您...

python實現冒泡演算法

演算法思想 每次比較兩個相鄰的元素,如果他們的順序錯誤就把他們交換位置 比如有五個數 12,35,99,18,76,從大到小排序,對相鄰的兩位進行比較 第一趟 第一次比較 35,12,99,18,76 第二次比較 35,99,12,18,76 第三次比較 35,99,18,12,76 第四次比較 3...