Python程式設計 排序演算法之氣泡排序

2021-08-20 13:40:09 字數 1326 閱讀 3800

列表排序

常見的排序演算法

名稱時間複雜度

空間複雜度

氣泡排序

o(n^2)

o(1)

選擇排序

o(n^2)

o(1)

插入排序

o(n^2)

o(1)

快速排序

mid堆排序

high

歸併排序

high

基數排序

少見希爾排序

少見桶排序少見

排序演算法關鍵點:

氣泡排序

import random

# 氣泡排序,從小到大排序o(n^2)

defbubble_sort

(lst):

count = 0

n = len(lst) - 1

# 9 總遍歷次數,比序列總數少1

for i in range(n): # 0-8

for j in range(n-i): # 8-0

if lst[j]>lst[j+1]: # 前者比後者大則交換

lst[j], lst[j+1] = lst[j+1], lst[j]

count += 1

print("count: %s", count)

# 氣泡排序改進,從小到大排序

defbubble_sort_1

(lst):

count = 0

n = len(lst) - 1

# 9 總遍歷次數,比序列總數少1

for i in range(n): # 0-8

exchange = false

for j in range(n-i): # 8-0

if lst[j]>lst[j+1]: # 前者比後者大則交換

lst[j], lst[j+1] = lst[j+1], lst[j]

exchange = true

count += 1

if exchange==false: # 如果遍歷結束沒有任何交換,說明已經有序

break

print("count: %s", count)

lst = list(range(10))

# random.shuffle(lst) #打亂順序

bubble_sort(lst)

# count: %s 45

bubble_sort_1(lst)

# count: %s 9

print(lst)

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

Python排序演算法之氣泡排序

顧名思義,氣泡排序直觀的意思是氣泡越大冒的越快 對應到我們的列表中就是數字最大的先選出來,然後依次進行。例如 mylist 1,4,5,0,6 比較方式為 相鄰的兩個數字先進行比較,也就是mylist 0 和mylist 1 發現不是 的關係,就繼續比較mylist 1 和mylist 2 依次進行...

排序演算法之python氣泡排序

氣泡排序是一種交換排序 比較相鄰的連個關鍵字,把大的往後放,小的就向前移動,即冒泡 def bubblesort input list 如果待排序列為空,則直接返回空列表 if len input list 0 return sorted list input list for i in range...

排序演算法(python) 之 氣泡排序

比較相鄰的兩個元素,若前乙個大於後乙個則交換 對每一對相鄰元素進行比較,直至最後一對元素。重複上述步驟,知道排序完成。這為向上冒泡。向下冒泡同理。1 向上冒泡 m input split n int m i for i in range len m 輸入的陣列 for i in range len ...