2016-04-08 63 views
-9

我搜索了問題但未滿足,因此我想問一個問題。如果我想使用散列表來排序100個數字,那麼散列函數可以幫助我。我通過表格排序了10個數字(以bucketsort爲單位),最大長度是10.在不增加表格長度的情況下,我仍然意味着在那裏進行排序。 X%10不會再幫助我嗎?所以我怎麼能仍然排序我的數字。用於排序100個以上整數的散列函數

+0

排序100個數字 - 沒有任何努力。使用冒泡排序 - 它會做 –

+1

散列函數將如何幫助您執行排序? –

+0

我不想在這裏泡沫排序.....埃德醫治?我很瞭解你的建議。 – 2013

回答

2

在這種情況下,HashTable是無用的。
具體散列刪除訂購信息,使其無法排序!假設A < B
如果您有hash(A)hash(B),則無法對關係進行任何說明。

以下的任何可能是正確的:

  • hash(A) < hash(B)
  • hash(A) == hash(B)
  • hash(A) > hash(B)

所以你不能使用散列函數來進行排序。

HashTables不適用於排序!

使用功能QSort

int LessThan(const void* pA, const void* pB) { return *(int*)pA - *(int*)pB; } 

int main() 
{ 
    int num[100]; 
    // Fill in the array 

    qsort(num, 100, sizeof(int), LessThan); 

    // Your array is now sorted. 
    return 0; 
} 
+0

我不想qsort @abelenky – 2013

+0

可能我可以通過哈希表對浮點數進行排序嗎?如果你好意添加建議。 – 2013

+0

我在「Cormen算法介紹」一書中發現了散列函數如何處理浮點數的主題。這就是我進一步猜測的原因。 – 2013