什麼是冒泡演算法?
-- 像魚吐泡泡一樣,每次都是向上冒出乙個水泡
如何邏輯整理?
-- 先拿第乙個值和剩下的值,一一比較,必能找到最大的或者最小的
-- 比較過程中,第乙個值小於剩下的某個值,交換位置,依次比較到最後,最大的乙個肯定在最前面,找最大
-- 比較過程中,第乙個值大於剩下的某個值,交換位置,依次比較到最後,最小的乙個肯定在最前面,找最小
-- 每次找出最大的值或者最小的值,比較迴圈就減少一次,當只剩下乙個元素時候,就結束了
從第幾個值來看,按第幾個值比較,忽略列表本身的索引值
# !/usr/bin/python3def 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/python3def 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...