public class First{
public static void main(String[] args){
int[] arr = new int[]{4, 2, 7, 8};
int[] p = insertionSort(arr);
System.out.println(java.util.Arrays.toString(p));
}
public static int[] insertionSort(int[] arr){
int key;
int i;
for (int j = 1; j < arr.length; j++){
key = arr[j];
i = j - 1;
while( (i > 0) && (arr[i] > key)){
arr[i + 1] = arr[i];
i--;
}
arr[i + 1] = key;
}
return arr;
}
}
我不确定发生了什么,但上面的代码只打印原始的未排序数组而不是排序的int数组。
答案 0 :(得分:1)
此
while ((i > 0) && (arr[i] > key)) {
应该是
while ((i >= 0) && (arr[i] > key)) {
然后我得到
[2, 4, 7, 8]