用python實現基本的排序

2021-10-07 06:20:10 字數 2042 閱讀 5126

氣泡排序

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...