python實現快排演算法 Python實現快排

2021-10-12 22:21:56 字數 1389 閱讀 3045

挖坑法思路:

取乙個元素p(第乙個元素),使元素p歸位;

列表被p分成兩部分,左邊的數一定不大於p,右邊的數一定不小於p;

遞迴完成排序。

python**示例:

lst = [5, 7, 4, 3, 1, 2, 9, 8]

def quick_sort(d, l, r):

if l < r:

m = partition(d, l, r)

quick_sort(d, l, m - 1)

quick_sort(d, m + 1, r)

def partition(d, l, r):

# 挖坑法,函式執行結束後,左邊的數一定不大於p,右邊的數一定不小於p

p = d[l]

while l < r:

while l < r and d[r] >= p:

r -= 1

d[l] = d[r]

while l < r and d[l] <= p:

l += 1

d[r] = d[l]

d[l] = p

return l

quick_sort(lst, 0, len(lst) - 1)

《演算法導論》中的快速排序:

class quicksort(object):

__instance = none

def __new__(cls, *args, **kwargs):

"""單例模式"""

if not cls.__instance:

cls.__instance = object.__new__(cls)

return cls.__instance

def __init__(self, data):

self.__quick_sort(data, 0, len(data) - 1)

def __quick_sort(self, d, l, r):

if l < r:

q = self.__partition(d, l, r)

self.__quick_sort(d, l, q - 1)

self.__quick_sort(d, q + 1, r)

def __partition(self, d, l, r):

x = d[r] # last value

i = l - 1 # last index

for j in range(l, r):

if d[j] <= x:

i += 1

d[i], d[j] = d[j], d[i]

d[i + 1], d[r] = d[r], d[i + 1]

return i + 1

quicksort(lst)

原文:

python實現快排演算法 python快排演算法詳解

快排是python經典演算法之一。1 下面講解的是什麼是快排和快排的圖示。2 快排是一種解決排序問題的運算方法。3 快排的原理 在陣列中任意選擇乙個數字作為基準,用陣列的資料和基準資料進行比較,比基準數字打的數字的基準數字的右邊,比基準數字小的數字在基準數字的左邊,第一次排序之後分為比基準資料大或比...

python實現快排

學習python,隨便寫了下快排,如下 coding utf 8 快速排序演算法實現 import sys sys.setrecursionlimit 1000000 設定最大遞迴深度,這裡設定為一百萬 def kuaipai ii,jj,data list global s s 1 記錄遞迴的深度...

快排 Python實現

同氣泡排序 上篇博文 一樣,快速排序也屬於交換排序,通過元素之間的比較與交換位置來達到排序的目的。不同的是,氣泡排序在每一輪中只是把1個元素冒泡到陣列的一端,而快速排序是 每一輪挑選乙個基準元素,讓比基準元素大的元素移動到陣列的一邊,比基準元素小的移動到陣列的另外一端,從而把陣列拆解成兩部分。舉例說...