0
public static void insertionSort(int[] a) {
if (a == null || a.length < 2)
return;
int j;
for (int i = 1, temp = a[i]; i < a.length; i++) {
for (j = i - 1; j >= 0 && temp < a[j]; a[j + 1] = a[j], j--);
a[j + 1] = temp;
}
}
预计会按升序对int数组进行排序。但是对于输入数组{ 1, 2 ,3 , 7 , 8 , 6 , 100 , 99 , 98}
,它给出输出[1, 2, 2, 2, 2, 2, 2, 2, 2]
。我应该做些什么才能完成这项工作
为什么此插入排序代码不能按预期工作?
它做什么,你期望它做什么? –
预计按升序对int数组进行排序。对于输入数组{1,2,3,7,8,6,100,99,98},它给出输出[1,2,2,2,2,2,2,2,2,2] – Rpant
你试过了吗?逐步调试您的代码和/或打印各种变量的值以更好地理解发生了什么?特别是,这看起来很诡异:'for(j = i-1; j> = 0 && temp assylias