排序原理
所谓的插入排序跟我们打牌在调整我们手里牌的顺序原理是一样的,也就是说将未排序的元素依次插入到前边已经排好序的元素中适当的位置,知道全部插完为止。
时间复杂度
排序代码
public class InsertionSort {
/**
* 插入排序优化版本
* 适用场景:数组接近有序的情况下
*/
public void insertionSortV(int[] arr, int a, int n) {
for (int i = 1; i < arr.length; i++) {
//将外层循环的元素复制一份,
int e = arr[i];
//记录外层元素应该插入的位置
int j;
/**
* 内层循环,与外层循环复制的那个元素进行比较,如果
* 小于被比较的元素,将被比较的元素向后移动,然后再用复制的元素
* 在跟以前的前边的元素比较,以此类推,直到找到比他大的元素终止循环,将给元素放在比他大的后边
*/
for (j = i; j > 0 && arr[j - 1] > e; j--) {
arr[j] = arr[j - 1];
}
arr[j] = e;
}
}
}