我已经以两种不同的方式看到了插入排序的实现,如下所示,
方法一:
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--;
}
}
方法二:
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;
}
但我不明白为什么交换在第二种方法中的while循环之外的原因?有没有理由让它在while循环之外?