最近讀python版的資料結構與演算法,裘宗燕 2023年第一版,第9章 排序,文章中講氣泡排序時提到了交錯氣泡排序,並把它留作了練習,因此,在這裡我把我的答案留在這裡參考使用:
def stagger_sort(lst):
'''#交錯氣泡排序
#具體做法是 第一遍從左向右移動,下一遍從右向左移動,交替進行。
#目的 解決氣泡排序中存在一些距離最終位置很遠的元素導致對演算法的拖累。
'''e = 0 #奇偶 奇數正排序,偶數倒排序
to_right = 1
to_left = len(lst)-1 # 記錄正序和倒敘開始排序位置,避免重複比對
no_finish = true #迴圈標記符
while no_finish:
found = false #標記是否有元素移動,
if e % 2 == 0:
for j in range(to_right, len(lst)):
#從左向右
if lst[j-1] > lst[j]:
lst[j], lst[j-1] = lst[j-1], lst[j]
found = true
to_left -= 1
else:
for j in range(to_left, -1, -1):
#從右向左
if lst[j] > lst[j+1]:
lst[j], lst[j+1] = lst[j+1], lst[j]
found = true
to_right +=1
if not found: #false 代表迴圈後沒有發生過元素移動 意味著排完可以退出總迴圈
no_finish = false
e += 1
排序 氣泡排序 Python
依次比較相鄰兩元素的大小,順序與要求的不一致就交換。這樣會把待排序序列中的最大 最小 元素不斷 浮 到最右端,最終完成公升序或降序排列。對序列 2,4,1,3,6,5 按公升序排列 只記錄有交換發生的迴圈 第一次迴圈 2,4,1,3,6,5 2,1,4,3,6,5 2,1,3,4,6,5 2,1,3...
Python排序 氣泡排序
排序 氣泡排序 氣泡排序演算法的原理如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需...
Python氣泡排序
需求 對於一串不知道個數的無序數進行從大到小或從小到大排序。氣泡排序 思想 首先第乙個數與第二個數做比較,大者放後面作為新的第二個數,然後,第二個數再與第三個數作比較,大者放後面作為新的第三個數,以此類推,相鄰兩位置數比較大小,若前者大於後者,則交換位置,這樣遍歷完一次資料就把最大數放在了最後面,即...