排序log(n)对O(n log log n)中的子序列进行排序



我有log(n(个成对排序的子序列(长度可能不同(,我需要在O(n log log n(中排序,但我不知道怎么做。我曾考虑过使用合并排序,但它的时间复杂度为O(nlogn(。

使用自底向上的自然合并排序。如果不要求稳定性,则使用无序序列来指示运行的结束(代码还需要使用数组的结束作为运行的结束(。如果需要稳定性,则需要创建第二个计数(或指针(数组来跟踪运行边界,以防止由于合并过程中两个或多个运行按顺序排列而将两个或更多个运行视为单个运行。由于初始状态是log(n(正在运行,因此自下而上的自然合并排序将占用log(n,log(的时间复杂性。

相关内容

最新更新