排序算法工厂有哪些参数?

时间:2012-01-16 12:24:58

标签: algorithm sorting

我正在考虑创建软件,根据指定的要求和最佳拟合算法生成所有可能的排序算法。您为该软件指定了哪些实际要求?你会如何指定它们。

我的建议是:

getSortingAlgorithm(int memorySize, int timeConstraintInMillisec);

//getSortingAlgorithm("O(n)", "O(n*log(n))");
getSortingAlgorithm(AssymptomaticConstaint memoryConstraint, AssymptomaticConstaint timeConstraint);

任何其他强化,缓解这些限制的想法?

3 个答案:

答案 0 :(得分:0)

元素数量缓存的大小/类型也可能是一种结论,以便优化排序的缓存性能。

也是一个布尔值,表示元素是否具有 int值,因为整数排序不限于基于比较的算法。

要使用的线程数也可能是个问题:尝试在您的库中制作并行算法。

答案 1 :(得分:0)

你也可以有稳定/不稳定的参数。

例如冒泡排序和选择排序都有时间复杂度:O(n2),内存:O(1)

但冒泡排序稳定。 http://en.wikipedia.org/wiki/Category:Stable_sorts

答案 2 :(得分:0)

优化速度与存储。

重新存储,限制最大存储空间并使用“后备存储”文件(“chunked”排序)。

维护相同项目的订单(或不)。

索引排序?

稳定性与最佳平均速度相比,利用“几乎排序”的数据集。

数据集的大小 - 对于较小的数据集,设置较少的简单排序更好。

键的大小 - 这会影响使用的数据结构。