本技術(shù)涉及計(jì)算機(jī),尤其涉及一種冒泡排序電路、方法、計(jì)算機(jī)設(shè)備及介質(zhì)。
背景技術(shù):
1、在人工智能和數(shù)字圖像處理領(lǐng)域,需要進(jìn)行大量的數(shù)值排序,例如對(duì)像素點(diǎn)的灰度值、亮度值等進(jìn)行排序。排序算法將一串?dāng)?shù)據(jù)按照特定的順序進(jìn)行排列,它不僅是計(jì)算機(jī)科學(xué)的基本構(gòu)建塊,也是數(shù)據(jù)分析、信息檢索、以及各種高效計(jì)算應(yīng)用的核心組成部分。冒泡排序算法是一種常用的排序算法。冒泡排序算法的基本操作是比較兩個(gè)元素,如果它們的順序錯(cuò)誤就交換它們的位置。現(xiàn)有技術(shù)中,冒泡排序算法的硬件實(shí)現(xiàn)是重復(fù)地對(duì)同一個(gè)數(shù)組從頭到尾進(jìn)行遍歷,每一次遍歷都比較相鄰的兩個(gè)元素并且當(dāng)順序錯(cuò)誤就交換位置,因此需要按照串行方式進(jìn)行比較排序,這樣每一次遍歷可以將最大的元素排序到數(shù)組的末尾,也可以根據(jù)需要將最小的元素排序到數(shù)組的末尾。為了實(shí)現(xiàn)完整的排序結(jié)果,需要相比最大排序元素的數(shù)量減去一的差的平方的數(shù)量的比較器,因此就有較低的空間復(fù)雜度,也即只需要一個(gè)額外的空間來存儲(chǔ)交換時(shí)的中間值。但是,現(xiàn)有技術(shù)的冒泡排序算法和相應(yīng)的硬件實(shí)現(xiàn),無論是升序排列還是降序排列,都是依賴串行方式進(jìn)行比較排序,這樣導(dǎo)致時(shí)間復(fù)雜度是與最大排序元素的數(shù)量的平方成正比。因此,隨著機(jī)器視覺技術(shù)的發(fā)展,需要進(jìn)行排序的數(shù)組的元素?cái)?shù)量越來越多,同時(shí)對(duì)整體算法的運(yùn)行速度要求越來越高,現(xiàn)有技術(shù)的冒泡排序算法和相應(yīng)的硬件實(shí)現(xiàn),受限于串行運(yùn)行的基本原理上的限制,只能通過提高最大時(shí)鐘頻率也即縮短每一次比較相鄰元素的時(shí)間來提高整體速度,但是這樣提升效果有限。并且,隨著最大排序元素的數(shù)量規(guī)格增加,需要提供足夠數(shù)量的比較器,但是這些比較器中在串行運(yùn)行的情況下同時(shí)只有一個(gè)比較器在工作,而其他比較器都是閑置狀態(tài),這樣導(dǎo)致占用的資源多且資源利用率低下,不利于提升系統(tǒng)性能。
2、為此,本技術(shù)提供了一種冒泡排序電路、方法、計(jì)算機(jī)設(shè)備及介質(zhì),不僅用并行比較排序取代了現(xiàn)有技術(shù)中的串行比較排序,從而具有更高的排序效率,而且也通過優(yōu)化冒泡排序算法的邏輯實(shí)現(xiàn),減少了硬件資源消耗,在最大排序元素的數(shù)量規(guī)格較高的情況下也能維持較高的排序效率和排序性能,有利于提升系統(tǒng)性能和資源利用率。
技術(shù)實(shí)現(xiàn)思路
1、第一方面,本技術(shù)提供了一種冒泡排序電路。所述冒泡排序電路包括:第一數(shù)量的基本排序單元,其中,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元包括第二數(shù)量的比較交換器,所述比較交換器用于對(duì)輸入所述比較交換器的兩個(gè)元素進(jìn)行比較后從而按照預(yù)設(shè)排序方式輸出所述兩個(gè)元素,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元將所述第二數(shù)量的比較交換器均等劃分為第一級(jí)排序電路和第二級(jí)排序電路,所述第一數(shù)量的基本排序單元按照第一次序逐級(jí)連接,所述第一次序中的同一級(jí)的基本排序單元中的第一級(jí)排序電路與第二級(jí)排序電路之間滿足第一對(duì)應(yīng)關(guān)系,并且,所述同一級(jí)的基本排序單元中的第一級(jí)排序電路的輸出按照基于所述第一對(duì)應(yīng)關(guān)系的第一再組合次序被輸出給所述同一級(jí)的基本排序單元中的第二級(jí)排序電路,所述第一次序中的前一級(jí)的基本排序單元中的第二級(jí)排序電路與后一級(jí)的基本排序單元的第一級(jí)排序電路之間滿足第二對(duì)應(yīng)關(guān)系,并且,所述前一級(jí)的基本排序單元中的第二級(jí)排序電路按照基于所述第二對(duì)應(yīng)關(guān)系的第二再組合次序被輸出給所述后一級(jí)的基本排序單元的第一級(jí)排序電路;和末級(jí)排序單元,其中,所述末級(jí)排序單元包括具有所述第二數(shù)量的一半的比較交換器的第三級(jí)排序電路,所述第一次序中的最后一級(jí)的基本排序單元中的第二級(jí)排序電路與所述末級(jí)排序單元中的所述第三級(jí)排序電路滿足所述第二對(duì)應(yīng)關(guān)系,并且,所述第一次序中的最后一級(jí)的基本排序單元中的第二級(jí)排序電路按照基于所述第二對(duì)應(yīng)關(guān)系的第二再組合次序被輸出給所述末級(jí)排序單元中的第三級(jí)排序電路。
2、通過本技術(shù)的第一方面,不僅用并行比較排序取代了現(xiàn)有技術(shù)中的串行比較排序,從而具有更高的排序效率,而且也通過優(yōu)化冒泡排序算法的邏輯實(shí)現(xiàn),減少了硬件資源消耗,在最大排序元素的數(shù)量規(guī)格較高的情況下也能維持較高的排序效率和排序性能,有利于提升系統(tǒng)性能和資源利用率。
3、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述預(yù)設(shè)排序方式是將輸入所述比較交換器的兩個(gè)元素中的較大的元素排序在前以及將輸入所述比較交換器的兩個(gè)元素中的較小的元素排序在后。
4、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述預(yù)設(shè)排序方式是將輸入所述比較交換器的兩個(gè)元素中的較小的元素排序在前以及將輸入所述比較交換器的兩個(gè)元素中的較大的元素排序在后。
5、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元所包括的第一級(jí)排序電路和第二級(jí)排序電路分別并行地進(jìn)行比較和排序。
6、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元所包括的第一級(jí)排序電路中的所有比較交換器并行地對(duì)各自輸入的元素進(jìn)行比較后按照所述預(yù)設(shè)排序方式輸出,并且,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元所包括的第二級(jí)排序電路中的所有比較交換器并行地對(duì)各自輸入的元素進(jìn)行比較后按照所述預(yù)設(shè)排序方式輸出。
7、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述末級(jí)排序單元中的第三級(jí)排序電路中的所有比較交換器并行地對(duì)各自輸入的元素進(jìn)行比較后按照所述預(yù)設(shè)排序方式輸出。
8、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述冒泡排序電路中的每一個(gè)比較交換器均通過寄存器配置從而可以調(diào)整所述預(yù)設(shè)排序方式以便實(shí)現(xiàn)升序排列或者降序排列。
9、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述冒泡排序電路中的每一個(gè)比較交換器支持對(duì)無符號(hào)數(shù)或者有符號(hào)數(shù)進(jìn)行排序。
10、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述冒泡排序電路中的每一個(gè)比較交換器支持對(duì)多種進(jìn)制的數(shù)據(jù)進(jìn)行排序,所述多種進(jìn)制包括二進(jìn)制、十進(jìn)制和十六進(jìn)制。
11、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述冒泡排序電路用于對(duì)多個(gè)待排序元素進(jìn)行排序從而得到所述多個(gè)待排序元素的冒泡排序結(jié)果,所述多個(gè)待排序元素被輸入給所述第一次序中的最先一級(jí)的基本排序單元中的第一級(jí)排序電路,所述末級(jí)排序單元中的第三級(jí)排序電路的輸出是所述多個(gè)待排序元素的冒泡排序結(jié)果。
12、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述第一數(shù)量和所述第二數(shù)量均是基于所述多個(gè)待排序元素的數(shù)量確定的,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元的第一級(jí)排序電路所包括的比較交換器的數(shù)量是所述第二數(shù)量的一半,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元的第二級(jí)排序電路所包括的比較交換器的數(shù)量是所述第二數(shù)量的一半。
13、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述多個(gè)待排序元素的數(shù)量是n,n是大于等于4的偶數(shù),n表示為2的m次方,m是大于等于2的正整數(shù),所述第一數(shù)量是2的m減1次方再減去1,所述第二數(shù)量是n,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元的第一級(jí)排序電路所包括的比較交換器的數(shù)量是n的一半,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元的第二級(jí)排序電路所包括的比較交換器的數(shù)量是n的一半,所述末級(jí)排序單元的第三級(jí)排序電路所包括的比較交換器的數(shù)量是n的一半。
14、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,n是4、8、16或者32。
15、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,當(dāng)所述多個(gè)待排序元素的數(shù)量是奇數(shù)時(shí),通過增加0元素到所述多個(gè)待排序元素從而得到數(shù)量是偶數(shù)的等效待排序元素?cái)?shù)組,所述等效待排序元素?cái)?shù)組的冒泡排序結(jié)果用于確定所述多個(gè)待排序元素的冒泡排序結(jié)果。
16、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述第一對(duì)應(yīng)關(guān)系指示了按照從排序最前的元素開始直到排序最后的元素結(jié)束的第一排列次序,所述第一排列次序中按次序每兩個(gè)元素由同一個(gè)比較交換器輸出,其中,基于所述第一對(duì)應(yīng)關(guān)系的第一再組合次序包括:將所述第一排列次序中的排序最前的元素再排序在所述第一排列次序中的排序最后的元素之前,從而得到調(diào)整后第一排列次序,所述調(diào)整后第一排列次序中按次序每兩個(gè)元素被輸入到同一個(gè)比較交換器。
17、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述第一排列次序是元素(b1,b2,b3,b4,b5,b6,b7,b8),所述第一排列次序中的元素b1和元素b2,元素b3和元素b4,元素b5和元素b6,元素b7和元素b8,各自由同一個(gè)比較交換器輸出,所述調(diào)整后第一排列次序是元素(b2,b3,b4,b5,b6,b7,b1,b8),所述調(diào)整后第一排列次序中的元素b2和元素b3,元素b4和元素b5,元素b6和元素b7,元素b1和元素b8,各自被輸入到同一個(gè)比較交換器。
18、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述第二對(duì)應(yīng)關(guān)系指示了按照從排序最前的元素開始直到排序最后的元素結(jié)束的第二排列次序,所述第二排列次序中按次序每兩個(gè)元素由同一個(gè)比較交換器輸出,其中,基于所述第二對(duì)應(yīng)關(guān)系的第二再組合次序包括:將所述第二排列次序中的排序最后的元素的前一個(gè)元素再排序在所述第二排列次序中的排序最前的元素之前,從而得到調(diào)整后第二排列次序,所述調(diào)整后第二排列次序中按次序每兩個(gè)元素被輸入到同一個(gè)比較交換器。
19、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述第二排列次序是元素(c1,c2,c3,c4,c5,c6,c7,c8),所述第二排列次序中的元素c1和元素c2,元素c3和元素c4,元素c5和元素c6,元素c7和元素c8,各自由同一個(gè)比較交換器輸出,所述調(diào)整后第二排列次序是元素(c7,c1,c2,c3,c4,c5,c6,c8),所述調(diào)整后第二排列次序中的元素c7和元素c1,元素c2和元素c3,元素c4和元素c5,元素c6和元素c8,各自被輸入到同一個(gè)比較交換器。
20、在本技術(shù)的第一方面的一種可能的實(shí)現(xiàn)方式中,所述冒泡排序電路應(yīng)用于數(shù)字圖像處理任務(wù)中的像素點(diǎn)的灰度值排序。
21、第二方面,本技術(shù)提供了一種冒泡排序方法。所述冒泡排序方法包括:將第一數(shù)量的基本排序單元按照第一次序逐級(jí)連接,最后再連接末級(jí)排序單元,從而構(gòu)建冒泡排序電路,其中,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元包括第二數(shù)量的比較交換器,所述比較交換器用于對(duì)輸入所述比較交換器的兩個(gè)元素進(jìn)行比較后從而按照預(yù)設(shè)排序方式輸出所述兩個(gè)元素,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元將所述第二數(shù)量的比較交換器均等劃分為第一級(jí)排序電路和第二級(jí)排序電路,所述第一數(shù)量的基本排序單元按照所述第一次序逐級(jí)連接,所述第一次序中的同一級(jí)的基本排序單元中的第一級(jí)排序電路與第二級(jí)排序電路之間滿足第一對(duì)應(yīng)關(guān)系,并且,所述同一級(jí)的基本排序單元中的第一級(jí)排序電路的輸出按照基于所述第一對(duì)應(yīng)關(guān)系的第一再組合次序被輸出給所述同一級(jí)的基本排序單元中的第二級(jí)排序電路,所述第一次序中的前一級(jí)的基本排序單元中的第二級(jí)排序電路與后一級(jí)的基本排序單元的第一級(jí)排序電路之間滿足第二對(duì)應(yīng)關(guān)系,并且,所述前一級(jí)的基本排序單元中的第二級(jí)排序電路按照基于所述第二對(duì)應(yīng)關(guān)系的第二再組合次序被輸出給所述后一級(jí)的基本排序單元的第一級(jí)排序電路,所述末級(jí)排序單元包括具有所述第二數(shù)量的一半的比較交換器的第三級(jí)排序電路,所述第一次序中的最后一級(jí)的基本排序單元中的第二級(jí)排序電路與所述末級(jí)排序單元中的所述第三級(jí)排序電路滿足所述第二對(duì)應(yīng)關(guān)系,并且,所述第一次序中的最后一級(jí)的基本排序單元中的第二級(jí)排序電路按照基于所述第二對(duì)應(yīng)關(guān)系的第二再組合次序被輸出給所述末級(jí)排序單元中的第三級(jí)排序電路;將多個(gè)待排序元素被輸入給所述第一次序中的最先一級(jí)的基本排序單元中的第一級(jí)排序電路,然后,將所述末級(jí)排序單元中的第三級(jí)排序電路的輸出作為所述多個(gè)待排序元素的冒泡排序結(jié)果。
22、通過本技術(shù)的第二方面,不僅用并行比較排序取代了現(xiàn)有技術(shù)中的串行比較排序,從而具有更高的排序效率,而且也通過優(yōu)化冒泡排序算法的邏輯實(shí)現(xiàn),減少了硬件資源消耗,在最大排序元素的數(shù)量規(guī)格較高的情況下也能維持較高的排序效率和排序性能,有利于提升系統(tǒng)性能和資源利用率。
23、在本技術(shù)的第二方面的一種可能的實(shí)現(xiàn)方式中,所述第一數(shù)量和所述第二數(shù)量均是基于所述多個(gè)待排序元素的數(shù)量確定的,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元的第一級(jí)排序電路所包括的比較交換器的數(shù)量是所述第二數(shù)量的一半,所述第一數(shù)量的基本排序單元中的每一個(gè)基本排序單元的第二級(jí)排序電路所包括的比較交換器的數(shù)量是所述第二數(shù)量的一半。
24、在本技術(shù)的第二方面的一種可能的實(shí)現(xiàn)方式中,所述第一對(duì)應(yīng)關(guān)系指示了按照從排序最前的元素開始直到排序最后的元素結(jié)束的第一排列次序,所述第一排列次序中按次序每兩個(gè)元素由同一個(gè)比較交換器輸出,其中,基于所述第一對(duì)應(yīng)關(guān)系的第一再組合次序包括:將所述第一排列次序中的排序最前的元素再排序在所述第一排列次序中的排序最后的元素之前,從而得到調(diào)整后第一排列次序,所述調(diào)整后第一排列次序中按次序每兩個(gè)元素被輸入到同一個(gè)比較交換器。
25、在本技術(shù)的第二方面的一種可能的實(shí)現(xiàn)方式中,所述第二對(duì)應(yīng)關(guān)系指示了按照從排序最前的元素開始直到排序最后的元素結(jié)束的第二排列次序,所述第二排列次序中按次序每兩個(gè)元素由同一個(gè)比較交換器輸出,其中,基于所述第二對(duì)應(yīng)關(guān)系的第二再組合次序包括:將所述第二排列次序中的排序最后的元素的前一個(gè)元素再排序在所述第二排列次序中的排序最前的元素之前,從而得到調(diào)整后第二排列次序,所述調(diào)整后第二排列次序中按次序每兩個(gè)元素被輸入到同一個(gè)比較交換器。
26、第三方面,本技術(shù)實(shí)施例還提供了一種計(jì)算機(jī)設(shè)備,所述計(jì)算機(jī)設(shè)備包括存儲(chǔ)器、處理器及存儲(chǔ)在所述存儲(chǔ)器上并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)實(shí)現(xiàn)根據(jù)上述任一方面的任一種實(shí)現(xiàn)方式的方法。
27、第四方面,本技術(shù)實(shí)施例還提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)指令,當(dāng)所述計(jì)算機(jī)指令在計(jì)算機(jī)設(shè)備上運(yùn)行時(shí)使得所述計(jì)算機(jī)設(shè)備執(zhí)行根據(jù)上述任一方面的任一種實(shí)現(xiàn)方式的方法。
28、第五方面,本技術(shù)實(shí)施例還提供了一種計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的指令,當(dāng)所述指令在計(jì)算機(jī)設(shè)備上運(yùn)行時(shí)使得所述計(jì)算機(jī)設(shè)備執(zhí)行根據(jù)上述任一方面的任一種實(shí)現(xiàn)方式的方法。