py 氣泡排序

2022-02-24 15:12:50 字數 1643 閱讀 3565

import random

"""排序:將一組無序記錄序列調整為有序記錄序列

列表排序:將無序列表調整為有序列表

輸入:列表

輸出:有序列表

公升序與降序

內建函式sort()

"""#氣泡排序 bubble sort

#1、列表每兩個相鄰的兩個數,若前面比後面的大,則交換這個數

#2、一趟排序完成後,則無序列表減少乙個數,有序區增加乙個數 ps 迴圈一次會篩選出最大值放置有序區,剩餘無序區再迴圈

def bubble_sort(li):

for i in range(len(li) - 1):# 第一次迴圈篩選出最大值

for j in range(len(li) -i -1):

if li[j] > li[j+1]:#--公升序

#if li[j] < li[j+1] -----降序

li[j],li[j+1] = li[j+1],li[j]

print (li)

#生成100個0-1000的隨機數的列表,

#li = [random.randint(0,100) for i in range(10)]

"""li = [2,5,4,6,3,1,8,9,7]

print(li)

print("分割線--------------------")

bubble_sort(li)

print(li)"""

"""[2, 5, 4, 6, 3, 1, 8, 9, 7] ----------原列表

分割線--------------------

[2, 4, 5, 3, 1, 6, 8, 7, 9]

[2, 4, 3, 1, 5, 6, 7, 8, 9]

[2, 3, 1, 4, 5, 6, 7, 8, 9]

[2, 1, 3, 4, 5, 6, 7, 8, 9]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

[1, 2, 3, 4, 5, 6, 7, 8, 9]

"""#冒泡優化,當一次迴圈沒有發生任何交換,那麼就認為列表已經被排好序了,就結束

def bubble_sort2(li):

for i in range(len(li) - 1):# 第一次迴圈篩選出最大值

exchange = false

for j in range(len(li) -i -1):

if li[j] > li[j+1]:#--公升序

#if li[j] < li[j+1] -----降序

li[j],li[j+1] = li[j+1],li[j]

exchange = true

print (li)

if not exchange:

return

li2 = [2,5,4,6,3,1,8,9,7]

print(li2)

print("分割線--------------------")

bubble_sort2(li2)

print(li2)

氣泡排序 排序 氣泡排序

既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...

py 選擇排序

選擇排序 一趟排序記錄最小值,放到第乙個位置 再一趟排序記錄記錄列表無序區最小的數,放到第二個位置 關鍵點 有序區 無序區 無序區最小值 方法一 def select sort1 li li2 for i in range len li min li min li 此方法不建議,生成兩個陣列占用記憶...

py 選擇排序

選擇排序 一趟排序記錄最小值,放到第乙個位置 再一趟排序記錄記錄列表無序區最小的數,放到第二個位置 關鍵點 有序區 無序區 無序區最小值 方法一 def select sort1 li li2 for i in range len li min li min li 此方法不建議,生成兩個陣列占用記憶...