for (int i = 1; i < N; i++)
{ // 将 a[i] 插入到 a[i-1]、a[i-2]、a[i-3]...之中
for (int j = i; j > 0 && less(a[j], a[j-1]); j--)
exch(a,j,j-1);
}
第一次循环,i=1,j=1,若a[j]>a[j-1],交换a[j]与a[j-1];
要大幅提高插入排序的速度并不难,只需要在内循环中将较大的元素都向右移动而不总是交换
两个元素(这样访问数组的次数就能减半)。
for (int i = 1; i < N; i++)
{ // 将 a[i] 插入到 a[i-1]、a[i-2]、a[i-3]...之中
for (int j = i; j > 0 && less(a[j], a[j-1]); j--)
exch(a,j,j-1);
}
第一次循环,i=1,j=1,若a[j]>a[j-1],交换a[j]与a[j-1];
要大幅提高插入排序的速度并不难,只需要在内循环中将较大的元素都向右移动而不总是交换
两个元素(这样访问数组的次数就能减半)。