个人写的直接插入排序实现从前往后扫描排序的方式
public static int n = -1; public static void insertsort(int[] a) { for (int i = 1; i < a.length; i++) { // 从前开始扫描 int temp = a[i]; for (int j = 0; j < i; j++) { if (a[i] < a[j]) { for (int k = i; k > j; k--) { a[k] = a[k - 1]; // 每一次挪动之后数组现状 for (int m = 0; m < a.length; m++) { System.out.print(a[m] + "\t"); } System.out.println(); } if (n == -1) { n = j; } } } if (n >= 0) { a[n] = temp; } else a[i] = temp; n = -1; // 从后开始扫描 int j; for (j = i; j > 0 && a[j] > temp; j--) { a[j] = a[j - 1]; } a[j] = temp; } } public static void main(String[] args) { int[] a = { 11, 23, 33, 22, 4, 56, 2, 8, 32, 66, 11, 11 }; insertsort(a); for (int i = 0; i < a.length; i++) { System.out.print(a[i] + "\t"); } }
开始想着为什么插入排序都是定义为从后往前扫描排序,自己在写排序时没有考虑到时间复杂度的问题,下面贴上本人自己写的代码,从而证实确实应该要从后往前排序
本人初学,还请多多指点