最合适的排序算法

时间:2014-05-07 06:52:04

标签: c algorithm sorting data-structures

我有一个哈希表,可能包含大约1-5百万条记录。我需要迭代它来选择其中的一些条目,然后按某种顺序对它们进行排序。我打算使用链表来维护一个指向哈希表中条目的指针列表,我必须对其进行排序。但是使用链表,我遇到的唯一可用的排序选项是合并排序。但考虑到列表可能包含大约500万条记录,是否应该使用合并排序?我没有限制只使用链表来维护指针列表。我也可以使用数组,以便我可以使用堆排序。但是考虑到这个完整的操作非常频繁并且它的不同实例可以并行运行,决定这个数组的大小将是一项具有挑战性的任务。此外,从哈希表中筛选出来的用于排序的条目数可以从hastable中的1到几乎所有记录变化。有人可以建议我最适合的方法吗?

1 个答案:

答案 0 :(得分:6)

首先尝试最简单的方法:

  1. 实现典型的动态数组,使用realloc()进行增长,也许使用典型的双分配时增长方案。增加到一百万个元素将需要大约20个重新分配。
  2. 使用qsort()对数组进行排序。
  3. 然后对其进行分析,并查看它受伤的位置。如果您对内存不敏感,请增加阵列的初始分配。