python實現排序演算法一 快速排序

2021-07-29 12:45:33 字數 1209 閱讀 7317

##快速排序演算法

##基本思想:分治法,將陣列分為大於和小於該值的兩部分資料,然後在兩部分資料中進行遞迴排序,直到只有乙個資料結束

## step1: 取陣列第乙個元素為key值,設定兩個變數,i = 0, j = len(a) - 1

## step2: j從後面開始遍歷,遇到小於key的值,則a[i] = a[j]

## step3: i從前面開始遍歷,遇到大於key的值,則a[j] = a[i]

## step4: 對兩部分資料遞迴查詢

**如下:

def quicksort(a, m, n):

key = a[m]

i = m

j = n

while i < j:

while a[j] >= key and i < j:

j -= 1

if i < j:

a[i] = a[j]

i += 1

while a[i] <= key and i < j:

i += 1

if i < j:

a[j] = a[i]

j -= 1

a[i] = key

if m < i - 1:

quicksort(a, m, i - 1)

if n > j + 1:

quicksort(a, j + 1, n)

if __name__ == '__main__':

b = [1, 22, 90, 4, 65, 3, 73, 8]

print(b)

length = len(b)

quicksort(b, 0, length - 1)

print(b)

在網上看到另乙個很簡單的方法,在這裡補充一下吧

def qsort(seq):

if seq==:

return

else:

pivot=seq[0]

lesser=qsort([x for x in seq[1:] if x=pivot])

return lesser+[pivot]+greater

if __name__=='__main__':

seq=[5,6,78,9,0,-1,2,3,-65,12]

print(qsort(seq))

排序演算法 快速排序Python實現

coding utf 8 file quick sort.py author zhang san time 2020 7 17 18 25 des 快速排序 每次選擇乙個pivot,然後以這個pivot為中心,兩邊分別存放比其大或者小的值,依次 迭代進行劃分,最終完成排序 這裡一定要注意指標滑動的方...

演算法 排序 python 實現 快速排序

主要分為兩個子演算法,partition a,p,r 以a r 為基準對陣列進行乙個劃分,比a r 小的放在左邊,比a r 大的放在右邊。quicksort a,p,r 是快速排序的子程式,呼叫劃分程式對陣列進行劃分,然後遞迴地呼叫quicksort a,p,r 以完成快速排序的過程。快速排序的最差...

Python實現快速排序演算法

快速排序 quicksort 1 演算法思想 快速排序是c.r.a.hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其為分治法 divide and conquermethod 1 分治法的基本思想 分治法的基本思想是 將原問題分解為若干個規模更小但結構與原問題相似的子問...