本公開屬于數(shù)據(jù)處理,涉及基于集成電路的數(shù)據(jù)排序方法,特別是涉及數(shù)據(jù)排序方法和裝置、電子設(shè)備。
背景技術(shù):
1、排序是數(shù)據(jù)處理過程中的常用操作之一,用于將一組數(shù)據(jù)按特定順序排列。排序方法廣泛應(yīng)用于各種領(lǐng)域,包括數(shù)字信號處理、高速處理器、數(shù)據(jù)庫系統(tǒng)等。高效的排序算法在提高系統(tǒng)性能和優(yōu)化數(shù)據(jù)處理方面起著至關(guān)重要的作用。
技術(shù)實現(xiàn)思路
1、本公開的目的在于提供數(shù)據(jù)排序方法和裝置、電子設(shè)備,其用于基于集成電路實現(xiàn)快速排序,并且用于實現(xiàn)結(jié)構(gòu)簡單、硬件復(fù)雜度低、步驟少、處理速度快的數(shù)據(jù)排序。
2、第一方面,本公開實施例提供一種數(shù)據(jù)排序方法,所述數(shù)據(jù)排序方法包括:獲取多個輸入數(shù)據(jù),所述多個輸入數(shù)據(jù)的數(shù)量為2的n次冪,其中n為大于1的整數(shù);將所述多個輸入數(shù)據(jù)平均劃分為2n-1個數(shù)據(jù)組并對各個數(shù)據(jù)組中的數(shù)據(jù)進行排序以獲取中間排序結(jié)果;以及將上一次排序得到的中間排序結(jié)果劃分為m/2個數(shù)據(jù)組并對各個數(shù)據(jù)組中的數(shù)據(jù)進行排序以獲取新的中間排序結(jié)果,以及重復(fù)此步驟n-1次以得到最終排序結(jié)果,其中m為上一次排序中數(shù)據(jù)組的數(shù)量。
3、在一些實現(xiàn)方式中,獲取多個輸入數(shù)據(jù)包括:獲取多個原始輸入數(shù)據(jù),所述多個原始輸入數(shù)據(jù)的數(shù)量不為2的整數(shù)次冪;以及利用擴充數(shù)據(jù)對所述多個原始輸入數(shù)據(jù)進行擴充以得到數(shù)量為2的整數(shù)次冪的擴充后的數(shù)據(jù),并且將所述擴充后的數(shù)據(jù)作為所述多個輸入數(shù)據(jù),其中所述數(shù)據(jù)排序方法還包括:在所述最終排序結(jié)果中刪除所述擴充數(shù)據(jù)。
4、在一些實現(xiàn)方式中,所述擴充數(shù)據(jù)為所述多個原始輸入數(shù)據(jù)所能表示的最大值或最小值。
5、在一些實現(xiàn)方式中,將所述多個輸入數(shù)據(jù)平均劃分為2n-1個數(shù)據(jù)組并對各個數(shù)據(jù)組中的數(shù)據(jù)進行排序以獲取中間排序結(jié)果包括:將所述多個輸入數(shù)據(jù)中的每兩個數(shù)據(jù)作為一個數(shù)據(jù)組;將各個數(shù)據(jù)組中的兩個數(shù)據(jù)分別輸入到2n-1個比較器中的對應(yīng)比較器;以及通過2n-1個比較器輸出具有2n-1個數(shù)據(jù)組的所述中間排序結(jié)果,各個數(shù)據(jù)組的所述中間排序結(jié)果包括按大小順序排列的兩個數(shù)據(jù)。
6、在一些實現(xiàn)方式中,將上一次排序得到的中間排序結(jié)果劃分為m/2個數(shù)據(jù)組并對各個數(shù)據(jù)組中的數(shù)據(jù)進行排序以獲取新的中間排序結(jié)果包括:將各個數(shù)據(jù)組的所述中間排序結(jié)果中的每兩個數(shù)據(jù)組作為一個下一級數(shù)據(jù)組;將各個下一級數(shù)據(jù)組中的兩個數(shù)據(jù)組分別輸入到2n-2個比較器中的對應(yīng)比較器;以及通過2n-2個比較器輸出具有2n-2個數(shù)據(jù)組的所述新的中間排序結(jié)果,每個數(shù)據(jù)組的所述新的中間排序結(jié)果包括按大小順序排列的四個數(shù)據(jù),其中通過2n-2個比較器輸出具有2n-2個數(shù)據(jù)組的所述新的中間排序結(jié)果包括:通過2n-2個比較器中的每個比較器,將一個數(shù)據(jù)組中的第一順序數(shù)據(jù)與另一個數(shù)據(jù)組中的第一順序數(shù)據(jù)進行比較,將所述一個數(shù)據(jù)組中的第二順序數(shù)據(jù)與所述另一個數(shù)據(jù)組中的第二順序數(shù)據(jù)進行比較,以輸出各自包括按大小順序排列的四個數(shù)據(jù)的排序結(jié)果,所述排序結(jié)果作為與一個比較器相對應(yīng)的輸出數(shù)據(jù)組。
7、在一些實現(xiàn)方式中,重復(fù)此步驟n-1次以得到最終排序結(jié)果包括:將上一次排序得到的中間排序結(jié)果中的每兩個數(shù)據(jù)組作為一個下一級數(shù)據(jù)組;將各個下一級數(shù)據(jù)組中的兩個數(shù)據(jù)組分別輸入到m/2個比較器中的對應(yīng)比較器;通過m/2個比較器輸出具有m/2個數(shù)據(jù)組的所述新的中間排序結(jié)果,每個數(shù)據(jù)組的所述新的中間排序結(jié)果包括按大小順序排列的2n除以m/2個數(shù)據(jù);以及重復(fù)上述各步驟以將包括按大小順序排列的2n個數(shù)據(jù)的排序結(jié)果作為所述最終排序結(jié)果,其中通過m/2個比較器輸出具有m/2個數(shù)據(jù)組的所述新的中間排序結(jié)果包括:通過m/2個比較器中的每個比較器的多個比較單元,將一個數(shù)據(jù)組中的按大小順序排列的數(shù)據(jù)與另一個數(shù)據(jù)組中的按大小順序排列的數(shù)據(jù)進行2n除以m輪比較,以輸出各自包括按大小順序排列的2n除以m/2個數(shù)據(jù)的排序結(jié)果,所述排序結(jié)果作為與一個比較器相對應(yīng)的輸出數(shù)據(jù)組。
8、在一些實現(xiàn)方式中,將所述多個輸入數(shù)據(jù)平均劃分為2n-1個數(shù)據(jù)組并對各個數(shù)據(jù)組中的數(shù)據(jù)進行排序以獲取中間排序結(jié)果包括:以升序邏輯或者降序邏輯對各個數(shù)據(jù)組中的兩個數(shù)據(jù)進行排序以獲取所述中間排序結(jié)果。
9、在一些實現(xiàn)方式中,將上一次排序得到的中間排序結(jié)果劃分為m/2個數(shù)據(jù)組包括:將上一次排序中每兩個數(shù)據(jù)組對應(yīng)的中間排序結(jié)果合并為1個數(shù)據(jù)組,以得到所述m/2個數(shù)據(jù)組。
10、在一些實現(xiàn)方式中,將上一次排序得到的中間排序結(jié)果劃分為m/2個數(shù)據(jù)組并對各個數(shù)據(jù)組中的數(shù)據(jù)進行排序以獲取新的中間排序結(jié)果包括:由上一次排序中的第一數(shù)據(jù)組和第二數(shù)據(jù)組合并得到第三數(shù)據(jù)組;以及對所述第三數(shù)據(jù)組中的數(shù)據(jù)進行排序以獲取所述第三數(shù)據(jù)組排序結(jié)果,包括:基于所述第一數(shù)據(jù)組和所述第二數(shù)據(jù)組進行k輪比較,以及根據(jù)每一輪比較得到的最大數(shù)據(jù)和最小數(shù)據(jù)獲取所述第三數(shù)據(jù)組的排序結(jié)果,k為所述第一數(shù)據(jù)組包含的數(shù)據(jù)的數(shù)量。
11、在一些實現(xiàn)方式中,基于所述第一數(shù)據(jù)組和所述第二數(shù)據(jù)組進行k輪比較包括:在第1輪比較中,將所述第一數(shù)據(jù)組和所述第二數(shù)據(jù)組中排序相同的數(shù)據(jù)進行比較并根據(jù)比較結(jié)果進行重排序以得到第1輪排序子結(jié)果;以及在第k輪比較中,對于第k-1輪排序子結(jié)果中的最大數(shù)據(jù)和最小數(shù)據(jù)之外的數(shù)據(jù)進行相鄰數(shù)據(jù)比較,并根據(jù)比較結(jié)果進行重排序以得到第k輪排序子結(jié)果,其中k為大于1且小于等于k的整數(shù)。
12、在一些實現(xiàn)方式中,所述數(shù)據(jù)排序方法采用升序邏輯進行排序,并且基于所述第一數(shù)據(jù)組和所述第二數(shù)據(jù)組進行k輪比較包括:在第1輪比較中利用一個比較器中的k個比較單元cmp1_0至cmp1_(k-1)對所述第一數(shù)據(jù)組和所述第二數(shù)據(jù)組中排序相同的數(shù)據(jù)進行比較,其中cmp1_m1用于對所述第一數(shù)據(jù)組和所述第二數(shù)據(jù)組中排序為m1的數(shù)據(jù)進行比較,cmp1_0輸出的較小值為第1輪比較的最小數(shù)據(jù),cmp1_(k-1)輸出的較大值為第1輪比較的最大數(shù)據(jù),m1為大于等于0且小于k的整數(shù);以及在第k輪比較中利用所述比較器中的k-k+1個比較單元cmpk_0至cmpk_(k-k)對第k-1輪比較結(jié)果中的最大數(shù)據(jù)和最小數(shù)據(jù)之外的數(shù)據(jù)進行比較,其中cmpk_m2用于對第k-1輪比較中cmp(k-1)_m2輸出的較大值和cmp(k-1)_(m2+1)輸出的較小值進行比較,cmpk_0輸出的較小值為第k輪比較的最小數(shù)據(jù),cmpk_(k-k)輸出的較大值為第k輪比較的最大數(shù)據(jù),k為大于1且小于等于k的整數(shù),m2為大于等于0且小于等于k-k的整數(shù)。
13、在一些實現(xiàn)方式中,所述數(shù)據(jù)排序方法采用升序邏輯進行排序,并且根據(jù)每一輪比較得到的最大數(shù)據(jù)和最小數(shù)據(jù)獲取所述第三數(shù)據(jù)組的排序結(jié)果包括:在所述第三數(shù)據(jù)組的排序結(jié)果中,第1輪比較得到的最小數(shù)據(jù)和最大數(shù)據(jù)的排序分別為0和2k-1,第k輪比較得到的最小數(shù)據(jù)和最大數(shù)據(jù)的排序分別為k-1和2k-k。
14、在一些實現(xiàn)方式中,所述數(shù)據(jù)排序方法采用降序邏輯進行排序,并且基于所述第一數(shù)據(jù)組和所述第二數(shù)據(jù)組進行k輪比較包括:在第1輪比較中利用一個比較器中的k個比較單元cmp1_0至cmp1_(k-1)對所述第一數(shù)據(jù)組和所述第二數(shù)據(jù)組中排序相同的數(shù)據(jù)進行比較,其中cmp1_m1用于對所述第一數(shù)據(jù)組和所述第二數(shù)據(jù)組中排序為m1的數(shù)據(jù)進行比較,cmp1_0輸出的較大值為第1輪比較的最大數(shù)據(jù),cmp1_(k-1)輸出的較小值為第1輪比較的最小數(shù)據(jù),m1為大于等于0且小于k的整數(shù);以及在第k輪比較中利用所述比較器中的k-k+1個比較單元cmpk_0至cmpk_(k-k)對第k-1輪比較結(jié)果中的最大數(shù)據(jù)和最小數(shù)據(jù)之外的數(shù)據(jù)進行比較,其中cmpk_m2用于對第k-1輪比較中的cmp(k-1)_m2輸出的較小值和cmp(k-1)_(m2+1)輸出的較大值進行比較,cmpk_0輸出的較大值為第k輪比較的最大數(shù)據(jù),cmpk_(k-k)輸出的較小值為第k輪比較的最小數(shù)據(jù),m2為大于等于0且小于等于k-k的整數(shù)。
15、在一些實現(xiàn)方式中,所述數(shù)據(jù)排序方法采用降序邏輯進行排序,根據(jù)每一輪比較得到的最大數(shù)據(jù)和最小數(shù)據(jù)獲取所述第三數(shù)據(jù)的排序結(jié)果包括:在所述第三數(shù)據(jù)的排序結(jié)果中,第1輪比較得到的最大數(shù)據(jù)和最小數(shù)據(jù)的排序分別為0和2k-1,第k輪比較得到的最大數(shù)據(jù)和最小數(shù)據(jù)的排序分別為k-1和2k-k。
16、本公開實施例提供的數(shù)據(jù)排序方法可以通過低硬件消耗、小數(shù)據(jù)依賴鏈的硬件結(jié)構(gòu)實現(xiàn)快速、并行的輸出排序結(jié)果,且能夠適配硬件常用的流水結(jié)構(gòu),具有易于實現(xiàn)、拓展性強等優(yōu)點。
17、本公開實施例提供的數(shù)據(jù)排序方法既能夠?qū)?shù)量為2的整數(shù)次冪的數(shù)據(jù)進行排序,又能夠?qū)θ我鈹?shù)量的數(shù)據(jù)進行排序,因而能夠滿足不同場景下的排序需求。
18、第二方面,本公開實施例提供一種數(shù)據(jù)排序裝置,所述數(shù)據(jù)排序裝置包括:數(shù)據(jù)獲取模塊,被配置為獲取多個輸入數(shù)據(jù),所述多個輸入數(shù)據(jù)的數(shù)量為2的n次冪,其中n為大于1的整數(shù);以及數(shù)據(jù)排序模塊,包括多級比較器陣列,所述多級比較器陣列中的每級比較器中的比較器的數(shù)量為下一級比較器中的比較器的數(shù)量的兩倍,并且所述數(shù)據(jù)排序模塊被配置為:將所述多個輸入數(shù)據(jù)平均劃分為n/2個數(shù)據(jù)組,通過第一級比較器中的n/2個比較器對各個數(shù)據(jù)組中的數(shù)據(jù)進行排序以獲取中間排序結(jié)果;將上一次排序得到的中間排序結(jié)果劃分為m/2個數(shù)據(jù)組,通過下一級比較器中的m/2個比較器對各個數(shù)據(jù)組中的數(shù)據(jù)進行排序以獲取新的中間排序結(jié)果,重復(fù)此步驟n-1次以得到最終排序結(jié)果,其中m為上一次排序中數(shù)據(jù)組的數(shù)量。
19、第三方面,本公開實施例提供一種電子設(shè)備,所述電子設(shè)備包括:存儲器,被配置為存儲可執(zhí)行程序;以及處理器,被配置為調(diào)用所述程序以執(zhí)行根據(jù)本公開實施例第一方面中任一項所述的數(shù)據(jù)排序方法。