我已經實現了快速排序的順序版本和並行版本。quicksort算法超速超線性
我用來驗證加速快速排序的最壞情況爲我實現:源陣列已經排序,並在我的情況樞軸始終是數組的第一個元素。
因此,分區會生成兩個集合,其中一個包含比pivot更小的元素,另一個包含高於pivot的元素,即n-1個元素,其中n是作爲快速排序參數傳遞的數組的元素數功能。遞歸深度的大小爲N -1,其中N是作爲快速排序函數參數傳遞的原始數組的元素數。
觀測值:該組由含有初始和correspondends陣列部分的最終位置的兩個變量實際上表示任一元素比樞軸小,元素比樞軸更高。整個部門正在發生,意味着在過程中不會創建新陣列。並行版本中並行順序的差異在多個數組之間被平均劃分(按照順序情況排序)的情況下創建多個數組。對於並行情況下元素的交點,使用算法合併。
獲得的加速比理論值要高,這意味着兩個線程的加速比順序版本要多2倍(3倍更精確),4個線程的加速比是10倍。
,我跑了線程計算機運行的是Ubuntu Linux操作系統的10.04,爲64位,如果我沒看錯的4個核機器(羿龍II X4)。編譯器是gcc 4.4,沒有爲編譯器傳遞標誌,除了包含用於並行實現的庫pthread;
那麼,有人知道超線性加速的原因達到了嗎?有人可以給我一些指針嗎?
X4是否有任何「渦輪增壓」或其他自動動態縮放? – 2012-06-25 03:55:37
此外,結果保持*隨機數據*還是它只是*最壞情況*數據的人工產物? – 2012-06-25 03:56:52