列表排序
常見的排序演算法
名稱時間複雜度
空間複雜度
氣泡排序
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 ...