我偶尔会遇到手动实现的排序和/或搜索算法,而不是使用语言实现的算法。我一直在研究的大多数源代码都是用Java,C#或PHP编写的 - 但我猜这种现象与语言无关。
关于列表等常规数据结构;为什么以及在哪里实现自己的算法?思想原因?内存效率更高?不能忍受使用内置功能的想法? Java最好使用mergesort(在Collections.sort()中),当你将它与quicksort作为例子进行比较时会有一些开销。如果您有定期使用的常用任务,我们非常欢迎您以您选择的语言提交它!
答案 0 :(得分:6)
这些只是其中一些原因......
答案 1 :(得分:3)
<强> BOGO排序强>:
while (!is_sorted(array)) {
randomly_shuffle(array);
}
预计运行时间:O(n!)
:)
答案 2 :(得分:1)
内置语言实现通常会更快,但前提是您要以标准方式进行排序/搜索。一旦你做了一些不寻常的事情,无论是解释键的方式,处理多个指针,挂钩到不同的环境等等,你可以通过调整基本例程来满足你的确切要求,从而获得更好的性能。
例如,我需要保留三个在同一个键上排序的大(大)数据集,因此我不得不返回源代码并更改C快速排序代码以在三个不同的数据数组上移动元素。
答案 3 :(得分:1)
在C ++中,您可以拥有一个内部有数组的容器,只能通过容器的方法进行搜索。你可以使用一些库实现,但是你必须提供一个比较器类,并且只需编写一个for()循环就可以获得相同数量的代码。为什么要为这种情况生成一个新实体(比较器类)?