平行計算實戰 雙調排序

2021-08-28 23:59:12 字數 1073 閱讀 2722

假設序列a是乙個單調遞增序列,b是乙個單調di'j遞減序列,那麼由a與b拼接而成的序列c就是乙個雙調序列。如圖1:

接下來我們要介紹的乙個概念是雙調**操作:

1)將數列的前半部分的各個元素(i值從0到n/2-1)和對應的後半部分的各個元素(i+n/2到n-1)做一一比較;

2)如果前半部分的元素大於後半部分的元素,則交換。

如果對c進行**操作則可以得到d,如法炮製可以再對d進行**操作...依此類推,最終可以得到排好序的序列。也就是說,如果有乙個雙調序列,那麼我們就可以非常fa方便的對它進行排序操作。那麼接下來的問題就是怎麼從乙個普通序列構建出乙個雙調序列了。

我們先來看乙個簡單的四個元素的例子。對於四個元素的序列而言,如果前兩個元素能夠單調遞增,後面兩個元素單調遞減,則構成乙個雙調序列。那麼不難得到構造的規則:

1)比較前兩個元素,如果第乙個元素比第二個元素大,則交換;

2)比較後兩個元素,如果第乙個元素比第二個元素小,則交換。

八個元素的雙調序列的構造可以分成兩個階段。第一階段將原序列分成前四個元素構成的序列1以及後四個元素構成的序列2。可以通過2.1節介紹的方法分別將序列1和序列2構造成雙調序列。構造完成後進入第二個階段,第二階段如下:

1)在序列1中,比較第乙個和第三個元素,如果第乙個更大則交換;同樣的比較第二個和第四個元素。然後再對第乙個和第二個元素進行比較,如果第乙個更大則交換;同樣的比較第三個和第四個;

2)在序列2中進行同樣的操作,只不過交換的規則相反。

階段二是不是很熟悉?就是第1節介紹的雙調序列的排序哈。

如果還是不明白可以看下圖: 

未完待續......

參考文獻 :

三十分鐘理解:雙調排序bitonic sort,適合平行計算的排序演算法 

python平行計算 python平行計算

0.基礎並行 發 multiprocessing threading 1.concurrent 2.併發 asynico 3.ipython下的平行計算 使用ipyparallel庫的ipython提供了前所未有的能力,將科學python的探索能力與幾乎即時訪問多個計算核心相結合。系統可以直觀地與本...

平行計算模型

平行計算模型通常指從並行演算法 的設計和分析出發,將各種並行計算機 至少某一類並行計算機 的基本特徵抽象出來,形成乙個抽象的計算模型。從更廣的意義上說,平行計算模型為平行計算提供了硬體和軟體介面 在該介面的約定下,並行系統硬體設計者和軟體設計 者可以開發對並行性 的支援機制,從而提高系統的效能。有幾...

平行計算模型

平行計算指的在同一時刻存在多於乙個計算任務被執行。由於cpu主頻提高的上限,使用多核心處理器進行平行計算早已成為主流。gpu也是乙個多核心的處理器,但它的平行計算模型與多核的cpu有很大區別。我們有必要了解gpu的並計算模型。對平行計算模式進行分類是了解cpu和gpu平行計算區別的有效方式。一種分類...