以下のように、2 つの異なる方法で挿入ソートの実装を見てきました。
方法 1:
for (int out = 1; out < numbers.length; out++) {
int temp = numbers[out];
int in = out - 1;
while (in >= 0 && numbers[in] > temp) {
numbers[in + 1] = numbers[in];
numbers[in] = temp;
in--;
}
}
方法 2:
int S[] = { 20, 25, 10};
int N = S.length;
for (int i = 1; i < N; i++) {
int j = i - 1;
int temp = S[i];
while (j >= 0 && S[j] > temp) {
S[j + 1] = S[j];
j--;
}
S[j + 1] = temp;
}
しかし、2番目のアプローチで、スワップがwhileループの外にある理由がわかりませんか? while ループの外側に置く理由はありますか?