[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 本当に配列をソートする必要があります。ソートはタスクの一部にすぎないためです。完全なタスクは、線形時間で配列に重複する値があり、追加の変数がないことを見つけることです。