python實現排序演算法解析

2022-10-04 19:00:12 字數 2213 閱讀 8816

一、氣泡排序

def bububle_sort(alist):

"""氣泡排序(穩定|n^2m)"""

n = len(alist)

for j in range(n-1):

count = 0

for i in range(0,n-1-j):

if alist[i]>alist[i+1]:

count +=1

alist[i], alist[i+1] = alist[i+1], alist[i]

if count==0:

return

二、選擇排序

def select_sort(alist):

"""選擇排序(不穩定|n^2)"""

n = len(alist)

for j in range(n-1):

min_index = j

for i in range(j+1,n):

if alist[min_index] > alist[i]:

min_index = i

alist[j], alist[min_index] = alist[min_index], alist[j]

三、插入排序

def insert_sort(alist):

"""插入排序(穩定|n^2)"""

n = len(alist)

for j in range(1,n):

i = j

while i>0:

if alist[i] < alist[i-1]:

alist[i], alist[i-1] = alist[i-1], alist[i]

i -= 1

else:

break

四、希爾排序

def shell_sort(alist):

"""希爾排序(不穩定|n^2)"""

n = len(alist)

gapwww.cppcns.com = n//2

while gap>=1:

for j in range(gap,n):

i=jwhile i>0:

if alist[i]

五、快速排序

def quick_sor程式設計客棧t(alist, first, last):

"""快速排序(不穩定|n^2)"""

if first >= last:

return

mid_value = alist[first]

low = first

high = last

while low < high:

#high左移

while low = mid_value:

high -= 1

alist[low] = alist[high]

#low右移

while low < high and alist[low] < mid_value:

low += 1

alist[high] =alist[low]

#從迴圈退出時,low=high

alist[low] = mid_value

www.cppcns.com

#對low左邊的列表執行快速排序

quick_ first, low-1)

#對low右邊的列表執行快速排序

quick_sort(alist, low+1, last)

六、歸併排序

def程式設計客棧 merge_sort(alist):

"""歸併排序(穩定|nlgn)"""

n = len(alist)

if n <= 1:

return alist

mid = n//2

#left 採用歸併排序後形成新的有序列表

left_li = merge_sort(alist[:mid])

#right 採用歸併排序後形成新的有序列表

right_li = merge_sort(alist[mid:])

#merge(left, right) 將兩個有序的子串行合併為乙個新的整體

left_pointer, right_pointer = 0, 0

result =

while left_pointer < len(left_li) and right_pointer

本文標題: python實現排序演算法解析

本文位址:

排序演算法 快速排序解析及Python實現

1.1 分而治之 divide and conquer 一種遞迴式方法 1.2 找出基線條件,這種條件必須盡可能簡單 1.3 不斷將問題分解為簡單問題,直到問題滿足極基線條件 假設陣列的長度為0 7這8個數字,且亂序排序,並且每次取正中間的值作為基線值 basevalue 那麼可結合二分查詢的思想可...

排序演算法python實現

先列出一些演算法複雜度的識別符號號的意思,最常用的是o,表示演算法的上屆,如 2n2 o n2 而且有可能是漸進緊確的,意思是g n 乘上乙個常數係數是可以等於f n 的,就是所謂的a b。而o的區別就是非漸進緊確的,如2n o n2 o n2 確實可以作為2n的上屆,不過比較大,就是所謂的a其他符...

python排序演算法實現

coding utf 8 氣泡排序 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大 公升序 就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步...