public static void InsertSort(int[] arr){
for (int i = 0; i < arr.length; i++) {
int end = i - 1;
//cur为待排序元素
int cur = arr[i];
while (end >= 0){
//end表示当前插入的位置
if (arr[end] < cur){
//end为当前要考虑的元素,cur比现在的要考虑的元素还要大,就是已经有序了
//有序就跳出当前循环
break;
}
//没有满足,就说明要进行交换,将当前位置的值赋成要考虑元素的位置,当前位置下标为end + 1
arr[end + 1] = arr[end];
arr[end] = cur;
end--;
}
}
}
还有优化的空间,将最后的arr【end】 = cur
可以放在while循环之后执行,这样就只用执行一半