从索引为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];
}