public class Sort { public static void insertSort(int[] array) { int tmp = 0; for (int i = 1; i < array.length; i++) { tmp = array[i]; int j; for (j = i - 1; j >= 0; j--) { if (array[j] > tmp) { array[j + 1] = array[j]; } else { break; } } array[j + 1] = tmp; } }
时间复杂度:最好 O(n) 平均 O(n^2) 最坏O(n^2)
空间复杂度 O(1)
概述:在一行无序的数组当中,我们可以先定义出一 个变量 tmp 用于存放我们代码中 i 的值。分别定义两个变量 i 与 j 分别
从他们的 i 下标和 i-1 的下标开始出发遍历整个数组。把 i 下标的值放入开始建好的仓库 tmp 当中与 j 比较,如果 j 比tmp
大那么循环继续,把 j 的值放入 j+1 的位置 ,然后 j 本身的位置就空了出来,然后 j-- 继续与 tmp 作比较 如果比 tmp 大 那么
继续向后走一位,比 tmp 大的值放入当前 j+1 的位置, 如果小那么 tmp 中的值就存放在当前的 j+1 位置。