//插入排序 public static void insertSort(int[] arr) { // 遍历所有数字 for (int i = 1; i < arr.length; i++) { int temp = arr[i]; int j; if(arr[i-1]>temp) { //不要写成arr[j-1]>temp&&j>0.因为当j=0的时候,表达式会先判断arr[0-1]>temp,然后再去判断后面的j>0,这样会报指针越界异常.但是如果先判断j>0,此时j=0,j>0判断的时候结果为false,便不会去判断arr[0-1]>temp这个表达式,也就不会出现arr[-1]的情况 for(j=i;j>0&&arr[j-1]>temp;j--) { arr[j]=arr[j-1]; } arr[j]=temp; } } }