Python快速排序的實現

一. 首先介紹快速排序實現的原理

最簡單的數組肯定就是隻有一個元素的數據組,例如a = [2],這個時候列表的長度爲1,因此根本無需進行排序,可以直接進行返回.此時列表長度爲1的條件將被定義爲基線條件,即遞歸函數的出口。

因此,此時如果使用遞歸來進行排序的話,只要根據基準將待排序的列表逐步切割。把列表變成只有一個元素的列表,然後返回即可。

二. 基本思路

此時設定需要進行比較大小的基準數字b[0],將列表中所有的數字和b[0]進行比較,將大的數字放在基準數字的後面,小的數字放在基準數字的前面。

1. 長度爲 2 的列表

這裏隨機給定一個列表,例如 b = [9,2]

  • 此時列表 b中的數字除了9以外就只有一個比9小的數字2,這個時候只需要將2放到9的前面:[2] —[9]

2.長度爲 3 的列表

繼續隨機給定一個列表 ,例如c = [6,4,9]

  • 現在給定比較的數值基準c[0],即6,遍歷c[1:],然後將小於6的放到6的前面,然後將比6大的數字放到6的後面。
  • 即[4]—[6]—[9]

三. 實現的代碼

  • 定義lessgreater,將小於基準值的array[0]的數值放在less列表裏面,大於基準值的array[0]的數值放在greater列表裏面。
  • 返回的是quickSort(less) + [pivot] + quickSort(greater),將分好的數值繼續進行遞歸。
def quickSorst(array):
    if len(array) < 2:
        return array
    else:
        pivot = array[0]
        less = [i for i in array[1:] if i <= pivot]
        greater = [i for i in array[1:] if i > pivot]
        return quickSorst(less) + [pivot] + quickSorst(greater)

運行:

a = [9,8,7,6,444,31,3]
b = quickSorst(a)
print(b)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章