Python快速排序演算法

2021-08-13 22:37:27 字數 980 閱讀 9623

# 檔名稱:a.py

# 作 者:孔雲

# 問題描述:演算法描述:

#先從數列中取出乙個數作為基準數。

#分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。

#再對左右區間重複第二步,直到各區間只有乙個數。

# 問題分析:。**如下:

def subsort(list, low, high):

key = list[low]#確定基準數

while low < high:#開始分割槽

if list[high] >= key:#大於這個數放到右邊

high -= 1#向左移動

if list[high] < key:#小於這個數放到左邊,置換位置

list[low] = list[high]

low += 1#向右移動

list[high] = list[low]

list[low] = key

return low

def quicksort(list, low, high):

if low < high:

key_index = subsort(list, low, high)

quicksort(list, low, key_index)

quicksort(list, key_index + 1, high)

#給定乙個陣列

if __name__ == '__main__':

list = [8, 10, 9, 6, 4, 16, 5, 13, 26, 18, 2, 45, 34, 23, 1, 7, 3]

print (list)

quicksort(list, 0, len(list) - 1)

print (list)

執行結果:

Python 快速排序演算法

快速排序 空間複雜度為o log n 時間複雜度為 o n log n o n 2 演算法不穩定,不具有適應性 1 從序列中取出乙個數作為基準數 2 分割槽,比基準數大的放基準數右邊,小的放左邊 3 遞迴,重複第二步操作,直到基準數的左邊和右邊分別只剩乙個數 演算法的穩定性是指 對於待排序的序列中,...

Python 快速排序演算法

快速排序是一種常用的排序演算法,也是最快的排序演算法之一,執行時間為o n logn 演算法主要使用了遞迴和分治思想,簡單明瞭 def quicksort array 遞迴出口條件,當陣列為或只有乙個元素時不需要排序,直接返回 if len array 2 return array else 選取乙...

python排序演算法 三 快速排序

快速排序 iflen data 2 遞迴入口及出口 mid data 0 選取基準值,也可以選取第乙個或最後乙個元素,也可以選擇中間的值 left,right 定義基準值左右兩側的列表 data.remove mid 從原始陣列中移除基準值 for num in data if num mid el...