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