就地合并排序实际用法

In-place merge sort practical usage

本文关键字:用法 排序 合并      更新时间:2023-10-16

我尝试在这里和那里搜索以找到确切的就地合并排序以及我需要在哪里使用它?但没有找到直接的答案。请在下面回答帮助我。

1) 何时何地需要就地合并?就地合并的实际用法。

2)如果就地合并的输入数组未排序会发生什么?

3)在合并排序,就地合并排序和快速排序中哪个占用更多内存?

注意:我问的是"std::inplace_merge",这是一个stl算法。

1)

当您想在 O(nlogn) 时间内对列表进行排序,同时使用比标准合并排序更少的空间时,使用就地合并排序。

2)排序的全部目的是使输入数组排序,因此未排序的输入数组将通过就地合并排序。

3) Mergesort 使用更多内存,因为它为两个递归调用创建了两个大小为一半的新数组。就地合并排序和快速排序应占用大约相同的空间,因为它们都是就地的。对于合并排序,in-place 表示 O(log n) 额外的空间,用于保留长度为 n 的数组的相关索引,而不是最严格的 O(1) 就地含义。在最坏的情况下,快速排序会占用 O(nlogn) 额外的空间,因为可能存在 O(n) 递归调用,每个递归调用都有占用空间 O(logn) 的指针。

希望这有帮助。