1. 程式人生 > 實用技巧 >快速排序的程式碼及原理

快速排序的程式碼及原理

一、快速排序的原理

  主要是通過遞迴來實現快速排序。寫子函式,將資料(列表)的最左側位置的元素作為基數,將小於基數的元素放到左邊,大於基數的元素放到右邊,此時將基數的下標return回來。此時得到mid,左邊一部分資料和右邊一部分資料。通過遞迴實現子函式呼叫,將mid-1作為左邊這部分的右邊界,將mid+1作為右這部分的左邊界。

二、快速排序的程式碼

# 快排   重要字眼:基數、下標、邊界


def _quick_sort(li, left, right):
    tmp = li[left]
    while left < right:
        while left < right and
li[right] > tmp: right -= 1 li[left] = li[right] while left < right and li[left] < tmp: left += 1 li[right] = li[left] li[left] = tmp return left def quick_sort(data, left, right): if left < right: mid = _quick_sort(data, left, right) #
mid作為邊界 左邊的一部分,右邊的一部分。 quick_sort(data, left, mid-1) quick_sort(data, mid+1, right) dic = [5, 7, 1, 2, 3, 4, 8, 9, 6] quick_sort(data=dic, left=0, right=len(dic) - 1) print(dic)