2016-04-08 90 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