个人写的直接插入排序实现从前往后扫描排序的方式

 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");
    }
  }

 

  

开始想着为什么插入排序都是定义为从后往前扫描排序,自己在写排序时没有考虑到时间复杂度的问题,下面贴上本人自己写的代码,从而证实确实应该要从后往前排序

本人初学,还请多多指点

posted @ 2013-11-27 14:41  java菜鸟的成长之路  阅读(465)  评论(0编辑  收藏  举报