步骤
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)
图解
代码
public static void insertSort(int[] arr){
if(arr==null || arr.length <2){
retrun ;
}
for (int i = 1; i < arr.length; i++) {
for (int j = i; j >= 1; j--) {
if (arr[j] < arr[j - 1]) {
swap(arr, j, j - 1);
}
}
}
}
private static void swap(int[] arr, int i, int j) {
//将arr[i]和arr[j]交换
arr[i] = arr[j] ^ arr[i];
//将arr[j]和arr[i]交换
arr[j] = arr[j] ^ arr[i];
//将arr[i]和arr[j]交换
arr[i] = arr[j] ^ arr[i];
}