本文介紹一種并行排序算法實(shí)現(xiàn)贸辈,
基本原理非常簡單释树,
將數(shù)據(jù)按照順序切片,每個(gè)片段分配給一個(gè)單獨(dú)的線程處理擎淤。
單個(gè)片段可以使用常規(guī)的排序算法奢啥。
每個(gè)片段排序好,之后嘴拢,進(jìn)行歸并運(yùn)算桩盲,
每一級的歸并也可以用多線程并行處理。
以8個(gè)片段為例席吴;
(1,2),(3,4),(5,6),(7,8)分別歸并赌结;
形成4個(gè)片段捞蛋,1,2,3,4;
然后(1,2)(3,4)歸并形成1,2
最后合并為1個(gè);
下面給出代碼鏈接:
https://github.com/wiltchamberian/Algorithms/blob/main/PSort.h
經(jīng)不完全測試姑曙,100萬量級襟交,平均速度高于c++17的并行排序算法。代碼只依賴c++11.