使用python使用佇列來實現快速排序

2021-10-01 07:06:02 字數 1418 閱讀 8127

一般來說我們實現快速排序是使用遞迴的方式來呼叫,但是這種 方式往往在呼叫過程中會造成棧溢位的問題,所以最好的取代方式 是通過佇列來模擬實現遞迴

# encoding: utf-

8import queue

def quick_queue_sort

(array)

: work_queue = queue.

queue()

quick_data =

quickdata(0

,len

(arr)-1

, arr)

work_queue.

put(quick_data)

while work_queue.

qsize()

>0:

data = work_queue.

get_nowait()

i = data.head

j = data.tail

compare = array[data.head]

if j > i:

while j > i:

while j > i and array[j]

>= compare:

j -= j

array[i]

= array[j]

while j > i and array[i]

<= compare:

i += i

array[j]

= array[i]

array[i]

= compare

work_queue.

put(

quickdata

(data.head, i -

1, array)

) work_queue.

put(

quickdata

(i +

1, data.tail, array)

)class

quickdata

: def __init__

(self, head, tail, array)

: self.head = head

self.tail = tail

self.array = array

if __name__ ==

'__main__'

: arr =[1

,8,9

,121

,122,5

,8,4

,9,1

,6,45

,9,125

,6546

,16546

]quick_queue_sort

(arr)

print

(arr)

使用python 來實現炒股

以前有這種想法,自從平時下班後自學python 開始,這種想法就越演越烈。其實筆者 也只有一年時間,經驗遠遠不足,但想著平時私下時間拿來做點啥事,因此也是這篇文章的由來。1.的策略 對於 的研究,一直想再專門寫個 論述 論 特別是這兩年量化投資盛行,基本都是在python語言基礎上進行的策略回歸。總...

Python使用佇列實現Josephus問題

josephus問題,在這個古老的問題中,n個深陷絕境的人一致同意通過以下方式減少生存的人數。他們圍坐一圈 位置記為0 n 1 並從第乙個人報數,報到m的人會被殺死,知道最後乙個人留下來。傳說中josephus找到了不會被殺死的位置。接收n和m的值,列印出被殺死的順序 while 1 if len ...

Python使用佇列實現Josephus問題

josephus問題,在這個古老的問題中,n個深陷絕境的人一致同意通過以下方式減少生存的人數。他們圍坐一圈 位置記為0 n 1 並從第乙個人報數,報到m的人會被殺死,知道最後乙個人留下來。傳說中josephus找到了不會被殺死的位置。接收n和m的值,列印出被殺死的順序 if name main nu...