python 快速排序的實現

2021-09-26 20:48:04 字數 819 閱讀 5364

快速排序(quicksort)是對氣泡排序的一種改進。

快速排序演算法通過多次比較和交換來實現排序,其排序流程如下:

def quick_sort(origin_items, comp=lambda x, y: x <= y):

items = origin_items[:]

_quick_sort(items, 0, len(items) - 1, comp)

return items

def _quick_sort(items, start, end, comp):

if start < end:

pos = _partition(items, start, end, comp)

_quick_sort(items, start, pos - 1, comp)

_quick_sort(items, pos + 1, end, comp)

def _partition(items, start, end, comp):

# 把列表最後乙個作為樞軸

pivot = items[end]

# i 用來記錄交換位置

i = start - 1

for j in range(start, end):

if comp(items[j], pivot):

i += 1

items[i], items[j] = items[j], items[i]

items[i + 1], items[end] = items[end], items[i + 1]

return i + 1

快速排序的實現(python)

usr bin env python3 coding utf 8 import random 快速排序基礎 defpartition a,p,r x a r i p 1 j p while j r if a j x i 1 temp a i a i a j a j temp j 1 i 1 temp...

快速排序的python實現

執行過程中,i 之前 含 的元素都比 a r 小,之後的比 a r 大。即 p i 的元素比 a r 小,其後a i 1 a j 1 的元素比a r 大。最後,交換a i 1 與a r def quicksort a,p,r if p r q partition a,p,r quicksort a,...

快速排序的Python實現

任意選乙個資料作為基準資料,然後將所有比它小的數都放到它的左邊,所有比它大的數都放到它的右邊 這裡以乙個列表作為例子 45,34,12,56,87,77,47,23 首先選擇45為基準資料 比45小的有 34,12,23 比45大的有 87,77,47,56 所以第一次排序就是 34,12,23,4...