【发布时间】:2013-11-25 03:42:37
【问题描述】:
能否请你们用外行的话向我解释一下,无论有没有代码示例,使用递归的分而治之数组排序是如何工作的,以及它与迭代数组排序有何不同?我完全迷失在这里。
【问题讨论】:
-
什么意思?分而治之的工作方式总是相同的:分成两个(或更多)子问题,递归解决子问题,最后加入解决方案。您可以通过多种方式执行此操作:对前半部分数组进行排序,然后对后半部分进行排序,然后合并两个排序后的数组(合并排序方法)。或者在数组中取一个数字,将所有小于该数字的元素放在一个子数组中,将较大的元素放在另一个子数组中。对这两个子数组进行排序并将它们连接起来。 (快速排序方法)。不知道您对迭代排序有什么要求。在那种情况下,“迭代”是什么意思?
-
这是给我的提示。不过,我没有太多关于如何完成它的背景知识。我有点不知所措......你要设计和实现三个函数,其中两个将使用递归。第一个是排序函数,当给定数组和大小时,它将对数组进行排序。该函数将使用递归来使用分治法对数组进行排序。第二个是一个搜索函数,它也使用递归并在数组上实现二进制搜索。最后一个函数将迭代地对数组进行排序(不使用递归)。
标签: c++ arrays sorting recursion iteration