以O(n)时间复杂度进行波排序

问题描述 投票:0回答:1

Wave Sort时间复杂度O(n)

的数组

Wave sort在数组中排序,从而形成一个wave。例如:3, 1, 4, 2, 8, 7这将是应用wave sort后的排序数组

如果给定的输入为3, 1, 4, 2, 8, 7,我希望1, 3, 4, 2, 7, 8的输出。输出可能会根据实现而有所不同。主要目标是在阵列中像波一样具有波峰和波谷,并在O(n)中进行。

sorting wave
1个回答
0
投票

通过简单地向下移动一次数组并交换遇到的每对数字,您可以从线性排序的数组中获得“波动​​”排序的数组。使用示例输入:

1, 2, 3, 4, 7, 8

我们可以沿着数组走,交换每对数字,得到:

2, 1, 4, 3, 7, 8

[使用合并排序或类似的分治法对数组进行排序的代价是O(N*lgN),其中N是数组的大小。最重要的是,我们将需要一个O(N)操作来进行wave排序。因此,整体顺序可以是:

O(N*lgN + N) = O(N*lgN)
© www.soinside.com 2019 - 2024. All rights reserved.