C++ 递归排序通过分而治之和迭代排序
C++ Recursive Sorting by Divide and Conquer & Iterative sorting
你们能否用通俗的语言向我解释一下,有或没有代码示例,使用递归划分和征服数组排序是如何工作的,以及它与迭代数组排序有何不同?我完全迷失在这里。
迭代数组排序有几种算法,它们都涉及比较元素并根据需要移动它们以使数组排序。
执行递归解决方案的一种方法是有一个基本情况,如果数组非常小,则使用迭代排序,对于较大的数组,它将数组拆分为较小的块并递归。 这些块中的每一个都将按排序返回,然后将它们合并(合并排序数组很快)。
所以在伪代码中:
function recursive_sort(array) {
if (array is small)
sort array iteratively and return
else
// split the array
let array1 be the first half of array
let array2 be the second half of array
// sort the chunks
recursive_sort(array1)
recursive_sort(array2)
// merge() describes the operation of merging two sorted arrays (fast!)
array = merge(array1, array2)
}
请注意,递归排序的基本情况可能只是array
为空或只有 1 个元素。 在这种情况下,在基本情况下不需要执行任何操作,因此不依赖于迭代排序方法。
但基本思想是相同的:每个递归调用将使用原始数组的一些较小块,并且这些块在最后组合以给出排序结果。
相关文章:
- 高级选择排序 - 在一次迭代中搜索两个元素
- 无法使用自定义迭代器进行排序
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- 在C++中使用迭代器合并排序
- 使用迭代器进行合并排序中的一个缓冲区
- 如何使equal_range迭代器在 Boost 多索引中按不同的索引排序?
- 使用迭代器对 std::list 进行排序
- 迭代快速排序方法的分区算法问题
- 如何对迭代器的模板专业化进行排序?
- 使用迭代器 c++ 进行排序
- 从卷或区域中的起点向外迭代,而不对其进行排序
- 快速排序迭代
- 迭代排序列表并计算不同的数字
- 用std ::排序迭代器
- C++,根据秒迭代对地图内容进行排序
- 迭代合并排序,工作速度与气泡排序相同
- 对具有两种不同字典排序的容器进行迭代
- 创建一个C++预排序迭代器,为循环提供树节点
- 我正在尝试为我的 DynamicArray 类创建一个迭代器。为什么 STL 排序不适用于我的迭代器?
- c++排序迭代有时会给出错误的值