氣泡排序
def sort(alist):
for j in range(len(alist)-1):
for i in range(len(alist)-1-j):
if alist[i] > alist[i+1]:
alist[i], alist[i+1] = alist[i+1], alist[i]
return alist
選擇排序
def sort(alist):
max_index = 0
for j in range(len(alist)-1):
for i in range(len(alist)-1-j):
if alist[max_index] < alist[i]:
max_index = i
alist[max_index], alist[len(alist)-1-j] = alist[len(alist)-1-j], alist[max_index]
return alist
插入排序
def sort(alist):
for i in range(1, len(alist)):
while i > 0:
if alist[i] < alist[i-1]:
alist[i], alist[i-1] = alist[i-1], alist[i]
i -= 1
else:
break
return alist
插入排序的高階(希爾排序)
def sort(alist):
gap = len(alist) // 2
while gap >= 1:
for i in range(gap, len(alist)):
while i > 0:
if alist[i] < alist[i - gap]:
alist[i], alist[i - gap] = alist[i - gap], alist[i]
i -= gap
else:
break
gap //= 2
return alist
原理:
快速排序
def sort(alist,start,end): #[6,1,2,7,9,3,4,5,10,8]
low = start
high = end
while low > high:
return
mid = alist[start]
while low < high:
while low < high:
if alist[high] < mid:
alist[low] = alist[high]
break
else:
high -= 1
while low < high:
if alist[low] > mid:
alist[high] = alist[low]
break
else:
low += 1
if low == high:
alist[low] = mid
break
sort(alist, start, high-1) // 這裡的high和low一樣,都是中間位置的index
sort(alist, high+1, end) // 這裡的high和low一樣,都是中間位置的index
return alist
alist = [6,1,2,7,9,3,4,5,10,8]
print(sort(alist, 0, len(alist)-1))
用Python實現基本排序演算法03 插入排序
一 插入排序的思路 回顧前面提到過的氣泡排序 選擇排序,我們發現這兩種演算法的思路還是比較直觀的。然而現在即將隆重推出的插入排序演算法則顯得有些抽象了。總體而言,插入排序是把待排序的元素全體看成由兩部分組成 已排序完成的部分 有序子串 和尚未排序的部分 無序子串 以從小到大排序為例,假設共計n個元素...
用python實現堆排序
一 概念 將剩餘的堆繼續調整為最大堆,具體過程在第二塊有介紹,以遞迴實現 剩餘部分調整為最大堆後,再次將堆頂的最大數取出,再將剩餘部分調整為最大堆,這個過程持續到剩餘數只有乙個時結束 coding utf 8 author alex li import time,random defsift dow...
用python實現氣泡排序
氣泡排序 冒泡法也稱沉底法,沒相鄰兩個記錄關鍵字比較大小,大的記錄往下沉 也可以小的網上浮 每一遍把最後乙個下沉的位置記下,下一遍只需檢查比較到此位置 到所有記錄都不發生變化時,整個過程結束 每交換一次,記錄減少乙個反序數 有一組資料 83,16,9,96,27,75,42,69,34 在開始時83...