对于数组中的每个索引,返回较小的数字

时间:2017-11-11 09:34:05

标签: arrays

我有一个给定的数组,我需要返回一个数组,在第一个数组的每个单元格中有一个较小的数字。例如 [3,4,2,10] 输出应该是 [2,3,1,9]

复杂性应为O(n*log(n))

我将不胜感激任何帮助

1 个答案:

答案 0 :(得分:1)

你可以做得更好O(n log n),这里是伪代码:

subOne( array[])
      n=arrayLength
      for i=1 to n
         array[i]=array[i]-1
return array

运行时间:O(n)

如果您坚持O(n log n),您还可以使用merge sort

对数组进行排序
mergesort(Array m)
{
     if length(m) ≤ 1
         return m
     else
     {
         middle = length(m) / 2
         for each x in m up to middle
             add x to left
         for each x in m after middle
             add x to right
         left = mergesort(left)
         right = mergesort(right)
         result = merge(left, right)
         return result
     }
}

总计:O(n) + O(n log n) = O(n log n)