我需要为此算法实现递归版本。作为递归的新手,我对如何处理这个问题有一个非常模糊的想法。
描述给定一组的Θ(n lg n)时间算法 n个整数的S,确定S中的哪两个元素 差别很小。
答案 0 :(得分:2)
这可能会让你的生活变得更轻松的一个观察是认识到如果数字按顺序排序,那么差异最小的数字对必须彼此相邻。因此,一个简单的算法是对元素进行排序,然后查看所有相邻的对以找到最小的元素。
由于要求您递归执行此操作,您可能会尝试递归地解决每个部分。对于第一部分 - 排序 - 有一个 ton 良好的递归排序算法 - mergesort和quicksort来命名其中两个。 Mergesort在时间O(n log n)运行,因此这是一个很好的起点。
至于如何使用递归找到最佳对,这里有一些可以让你得到递归解决方案的见解:
这种整体方法在时间O(n log n)内运行。我会将细节留作练习,因为这似乎是一个问题设定问题。