# 檔名稱: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...