我需要编写一个对大小为 [0..N-1] 的数组进行排序的算法,该算法填充了范围 [0..N-1] 的值。数组中的值不能重复。排序应该在线性时间内工作,我只允许使用一些额外的变量。
请评论我写的代码。据我猜测,最糟糕的时间是 2*N。难道还是线性时间?是否有可能更快?
public int sort(){
int i = 0;
while (i < n){
if (a[i] != i)
switchElements(a[i], a[a[i]]);
else
i++;
}
return count;
}
附加 1 我真的需要对数组进行排序,因为排序只是任务的一部分。完整的任务是在线性时间内查找数组中是否存在重复值,并且没有其他变量。