就是将须要排序的数据不断插入到已排好序的数据中,时间复杂度为O(N^2);java
public static void main(String[] args) { int[] a = {22, 21, 3, 4, 2, 19, 200, 50}; insertionSort(a); } public static void insertionSort(int[] a) { for (int p = 1; p < a.length; p++) { //待排序,从第2个数开始排序 int tmp = a[p]; //待排序数字与前面全部的数字进行对比,若是比较数字大于待排序数字就换位置 for (int j = p; j > 0 && a[j - 1] > tmp; j--) { a[j] = a[j - 1]; a[j-1] = tmp; } } System.out.println(Arrays.toString(a)); }
[2, 3, 4, 19, 21, 22, 50, 200]