void insertionSort(int a[]){
for (int i = 1; i < a.length; i++) {
int temp = a[i];
int j = i;
for (j = i; j > 0&&temp < a[j - 1]; j--) {
a[j] = a[j - 1];
}
a[j] = temp;
}
}
自己在写这段代码时,内层循环中把temp<a[j-1]写到内层循环中,逻辑上似乎没错,即就是在寻找正确的插入位置时,条件是j>0且temp<a[j-1],放在内层循环中时,就变成先检查数组边界,然后找正确的插入位置,这样就会导致j继续自减。而我们想要的是循环终止条件(寻找正确的插入位置)是:j不出数组边界且temp<a[j-1]