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)中进行。
通过简单地向下移动一次数组并交换遇到的每对数字,您可以从线性排序的数组中获得“波动”排序的数组。使用示例输入:
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)