zoukankan      html  css  js  c++  java
  • 常用算法Java实现之直接插入排序

      直接插入排序是将未排序的数据插入至已排好序序列的合适位置。
      具体流程如下:
      1、首先比较数组的前两个数据,并排序;
      2、比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置;
      3、比较第四个元素与前三个排好序的数据,并将第四个元素放入适当的位置;
       ......
      4、直至把最后一个元素放入适当的位置。
     
      假如有初始数据:25  11  45  26  12  78。
      1、首先比较25和11的大小,11小,位置互换,第一轮排序后,顺序为:[11, 25, 45, 26, 12, 78]。
      2、对于第三个数据45,其大于11、25,所以位置不变,顺序依旧为:[11, 25, 45, 26, 12, 78]。
      3、对于第四个数据26,其大于11、25,小于45,所以将其插入25和45之间,顺序为:[11, 25, 26, 45, 12, 78]。
      .......
      4、最终顺序为:[11, 12, 25, 26, 45, 78]。
     
      直接插入排序是稳定的。直接插入排序的平均时间复杂度为O(n2)。
     
      Java 代码实现如下:(https://github.com/xbk417/algorithm
     1     public void sort(int[] arr) {
     2         int tmp;
     3         for(int i = 1; i < arr.length; i++) {
     4             // 待插入数据
     5             tmp = arr[i];
     6             int j;
     7             for(j = i - 1; j >= 0; j--) {
     8                 // 判断是否大于tmp,大于则后移一位
     9                 if(arr[j] > tmp) {
    10                     arr[j+1] = arr[j];
    11                 }else{
    12                     break;
    13                 }
    14             }
    15             arr[j+1] = tmp;
    16             System.out.println(i + ":" + Arrays.toString(arr));
    17         }
    18     }
  • 相关阅读:
    插入排序-Java
    选择排序-java
    逻辑回归----梯度上升
    logistic回归----- 随机梯度下降法
    JAVA实现聚类指标的计算Purity、NMI、RI、Precision、Recall、F值。
    Python 条形图绘制
    java中接口的注意事项
    算法-双向队列
    算法-manacher-最长回文子串-1
    算法-kmp-1
  • 原文地址:https://www.cnblogs.com/LeslieXia/p/5808057.html
Copyright © 2011-2022 走看看