【发布时间】:2015-07-23 05:25:44
【问题描述】:
给定数组:
int data[5] = {data[0],data[1],data[2],data[3],data[4]}
…和另一个带有索引的数组:
int idx[5] = {3,1,0,2,4}
重新排列data[5] 数组的最快方法是什么,使生成的(排序的)数组变为:
data[5] = {data[3],data[1],data[0],data[2],data[4]}
【问题讨论】:
-
最好的可以是 O(n) ,
-
空间复杂度可以是 O(n) 吗?或者应该小于那个?
-
@polasairam 我知道的最好的方法是首先复制原始数组,然后使用 for 循环进行分配。如果我获得更好的性能,O(n) 空间复杂度是可以接受的。