QuickSort算法對10.000.000個數字進行排序。運行時間爲5.3秒。我想知道如果有1,000,000,000個數字,什麼是運行時間。QuickSort的時間表現
大概需要681秒是合乎邏輯的嗎?
(這是一個假設性的問題,所以我們不依賴於計算機的RAM或CPU性能比較。)
QuickSort算法對10.000.000個數字進行排序。運行時間爲5.3秒。我想知道如果有1,000,000,000個數字,什麼是運行時間。QuickSort的時間表現
大概需要681秒是合乎邏輯的嗎?
(這是一個假設性的問題,所以我們不依賴於計算機的RAM或CPU性能比較。)
快速排序的運行時間,平均爲O(n log n)的。假設運行時對於某個常量c具有c n log n的形式。你知道,當n = 10,000,000運行時間爲5.3s,所以我們得到
10,000,000Ç登錄10,000,000 = 5.3s
10,000,000 C· 7 = 5.3s
C = 75.71ns
現在讓我們插上的N = 1,000,000,000:
C N日誌N =
75.71ns· 1,000,000,000·登錄十億
= 681.43s
所以,是的,你的估計是合理的。
上的快速排序維基百科頁面: https://en.wikipedia.org/wiki/Quicksort
StackOverflow的最壞情況: Worst case for QuickSort - when can it occur?
這是回答對數學論壇的複雜性: https://math.stackexchange.com/questions/96767/worst-case-complexity-of-the-quicksort-algorithm
這裏是關於時間的答案: https://math.stackexchange.com/questions/1071229/expected-time-of-quicksort?rq=1
雖然這很有用,這是否直接回答這個問題? – templatetypedef
我並不是說只是發佈鏈接,但表明這已經被問及回答,我認爲這是一個很好的問題,並且想分享問題帶到哪裏的鏈接。從@templatetypedef獲得實際的ANSWER也很有用,並且希望能夠得到所有的讚揚。我希望你的回答共享的關鍵是,這是一個非線性解決方案。 – Baronz
我懷疑這是一個很好的問題這裏的計算機科學論壇:http://cs.stackexchange.com – Baronz