# 氣泡排序
def bubble_sort(arr):
for i in range(0, len(arr)):
for j in range(0, len(arr)-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# 選擇排序
def selection_sort(arr):
for i in range(0, len(arr)):
for j in range(i+1, len(arr)):
if arr[i] > arr[j]:
arr[i], arr[j] = arr[j], arr[i]
return arr
# 插入排序
def insert_sort(arr):
for i in range(1,len(arr)):
for j in range(0,i):
if arr[j] > arr[i]:
arr[j], arr[i] = arr[i], arr[j]
return arr
# 快速排序
def quick_sort(arr):
"""快速排序"""
if len(arr) < 2:
return arr
# 選取基準,隨便選哪個都可以,選中間的便於理解
mid = arr[len(arr) // 2]
# 定義基準值左右兩個數列
left, right = ,
# 從原始陣列中移除基準值
arr.remove(mid)
for item in arr:
# 大於基準值放右邊
if item >= mid:
else:
# 小於基準值放左邊
# 使用迭代進行比較
return quick_sort(left) + [mid] + quick_sort(right)
# 歸併排序
def merge_sort(arr):
if len(arr)<2:
return arr
mid = len(arr)//2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left,right)
def merge(left,right):
result =
while len(left)>0 and len(right)>0:
if left[0]<=right[0]:
else:
result += left
result += right
return result
def heapify(arr, n, i):
largest = i
left = 2 * i + 1
right = 2 * i + 2
if left < n and arr[i] < arr[left]:
largest = left
if right < n and arr[largest] < arr[right]:
largest = right
if largest != i:
arr[i],arr[largest] = arr[largest],arr[i] # 交換
heapify(arr, n, largest)
def heap_sort(arr):
n = len(arr)
# build a maxheap.
for i in range(n, -1, -1):
heapify(arr, n, i)
# 乙個個交換元素
for i in range(n-1, 0, -1):
arr[i], arr[0] = arr[0], arr[i] # 交換
heapify(arr, i, 0)
if __name__ == '__main__':
arr = [3,2,6,12,1,7,5,11,9,8,10,4]
print('氣泡排序:',bubble_sort(arr))
arr = [3,2,6,12,1,7,5,11,9,8,10,4]
print('選擇排序:',selection_sort(arr))
arr = [3,2,6,12,1,7,5,11,9,8,10,4]
print('插入排序:',insert_sort(arr))
arr = [3,2,6,12,1,7,5,11,9,8,10,4]
print('快速排序:',quick_sort(arr))
arr = [3,2,6,12,1,7,5,11,9,8,10,4]
print('歸併排序:',merge_sort(arr))
arr = [3,2,6,12,1,7,5,11,9,8,10,4]
print('堆排序: ',merge_sort(arr))
排序演算法Python
廢話不說直接看 計數排序 def countsort datalist 最終排好序的陣列 b 0 len datalist 計算用來儲存計數的陣列c的長度 maxnum max datalist minnum min datalist clength maxnum minnum 1 c 0 clen...
排序演算法 python
author xcy 參考別人,盡量自己寫了 命名規則不太好,不建議用list命名,但不好改了。寫的過程中遇到的問題都寫在注釋中 以下方法都在pycharm中除錯過,python3.7,但測試用例不多,難免有錯誤望批評指正 剛發現shell排序 有問題,網上的部落格都是照搬的啊,錯的也搬。還有歸併和...
Python 排序演算法
python 排序演算法 持續更新ing 內建排序 氣泡排序 0 n 2 插入排序 選擇排序 希爾排序 堆排排序 快排排序 歸併排序 呼叫方法預設排序 a 9,5,8,7,4,3,1,6,2,0 a.sort print a 呼叫方法預設排序 a 9,5,8,7,4,3,1,6,2,0 b sort...