从索引为1的(第二个)位置开始插入。依次把后面的数插入到相应位置。摸牌一样。
Java代码如下
public static void insertSort(int[] arr){ if (arr == null || arr.length<2){ return; } //从第二个位置开始,把当前位置的数和后面的数插入到相应的位置。 for (int i = 1;i<arr.length;i++){ //把i前面的数和i进行交换比较,把i插入到正确的位置 for (int j=i-1;j>=0 && arr[j]>arr[j+1];j--){ swap(arr,j,j+1); } } } private static void swap(int[] arr, int i, int j) { int tem = arr[i]; arr[i] = arr[j]; arr[j] = tem; } private static void swap1(int[] arr, int i,int j){ arr[i] = arr[i] ^ arr[j]; arr[j] = arr[i] ^ arr[j];//arr[j] = arr[i] ^ arr[j] ^ arr[j] = arr[i]; arr[i] = arr[i] ^ arr[j];//arr[i] = arr[i] ^ arr[j] ^ arr[i] = arr[j]; }