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