本發(fā)明涉及數(shù)據(jù)處理領域,具體涉及一種基于二維哈希表的快速排序方法。
背景技術:
1、數(shù)字序列的排序算法是一種在信息處理、人工智能、通信等領域廣泛使用的算法。傳統(tǒng)的冒泡排序、選擇排序、希爾排序等排序算法存在算法復雜度高、同值亂序等問題。通信領域常將偽隨機數(shù)列用于加密運算,要求重復數(shù)值排序后按下標順序排列,同時嵌入式設備計算能力有限,其對數(shù)字序列的排序算法的復雜度和實時性有更高的要求。因此,設計一種適用于嵌入式領域工程應用的快速排序算法具有十分重要的現(xiàn)實意義。
技術實現(xiàn)思路
1、針對現(xiàn)有技術中的需求,本發(fā)明提供一種基于二維哈希表的快速排序方法,目的在于降低算法的時間復雜度,減少計算量。
2、一種基于二維哈希表的快速排序方法,包括以下步驟:
3、步驟1:根據(jù)正整數(shù)數(shù)列x中元素的長度n以及元素中的最大值m,構造二維哈希表h[m][n]以及數(shù)列x的下標序號表xi[n],正整數(shù)數(shù)列x中具有重復的元素;
4、步驟2:將下標序號表xi[n]中的下標依次存儲在二維哈希表h[m][n]內,其中,將下標存儲在與其相應元素對應的行內并從左開始存儲;
5、步驟3:從左至右,從上至下依次讀取二維哈希表h[m][n]中的下標,并將讀取的下標按讀取順序存儲在有序下標序號表yi中;
6、步驟4:根據(jù)有序下標序號表yi,通過查表法從正整數(shù)數(shù)列x中,得到排序后的有序數(shù)列y。
7、進一步為:步驟2包括以下步驟:
8、步驟2.1:構造寫地址表d[m],并將寫地址表d[m]的初始值均設為0;
9、步驟2.2:使正整數(shù)數(shù)列x中的元素經過哈希運算得到行號i;
10、步驟2.3:查找寫地址表d[m]得到列號j=d(i),并使d(i)的值自加1,i∈[0,m),j∈[0,n);
11、步驟2.4:根據(jù)行列號(i,j),將下標存儲在二維哈希表h[m][n]中;
12、步驟2.5:重復步驟2.2至步驟2.4,從左到右遍歷正整數(shù)數(shù)列x,將元素對應的下標存入二維哈希表h[m][n]中的相應位置。
13、進一步為:二維哈希表h[m][n]中,使用雙向循環(huán)鏈表代替橫向數(shù)組,將對應的下標鏈接到相應的鏈表頭上。
14、本發(fā)明的有益效果:針對長度和范圍有限的可重復數(shù)列,利用二維哈希表進行快速排序,能夠有效減少排序計算時間,降低時間復雜度,本方法具有算法復雜度低,占用硬件資源少等優(yōu)點,在嵌入式領域的實際工程應用中有著較高的借鑒以及使用價值。
1.一種基于二維哈希表的快速排序方法,其特征在于:包括以下步驟:
2.根據(jù)權利要求1所述的基于二維哈希表的快速排序方法,其特征在于:步驟2包括以下步驟:
3.根據(jù)權利要求1所述的基于二維哈希表的快速排序方法,其特征在于:二維哈希表h[m][n]中,使用雙向循環(huán)鏈表代替橫向數(shù)組,將對應的下標鏈接到相應的鏈表頭上。