回顾篇之Java的插入排序

简介: 回顾篇之Java的插入排序

前一段时间看到了一片文章《为什么我们要像驯化小狗狗一样驯化算法》,就一直在想我是否需要重头开始做一遍Java的基本算法排序,无论自己现在水平几何,都要回顾这些经典的,值得回味的程序片段。


      那么接下来我们就一睹为快了,看看你是否已经忘记了她,还是她依然活在你深深的脑海里。

package com.honzh.mwq.sort;
/**
 * 插入排序(原则就是当前位置的数和前面位置的数进行比较,如果当前位置的数小于之前的数,则交换位置).
 * 
 * @author qinge
 * 
 */
public class Inserting {
  public static void main(String[] args) {
    // 数组元
    int[] orgins = { 2, 1, 5, 4, 9, 8, 6, 7, 10, 3, 3 };
    // 排序前的数
    for (int num : orgins) {
      System.out.print(num + "、");
    }
    System.out.println();
    // 从第二个位置开始,因为第一个位置和他前面的位置(0个位置)相比,肯定为最小
    for (int index = 1; index < orgins.length; index++) { // 复杂度为数组元的长度,或者说n
      // 当前数
      int curValue = orgins[index];
      // 前一位的下标
      int preIndex = index - 1;
      // 当前数和前一位数相比,如果小,则交换位置,当前数继续和前一位数的前一位相比
      while (preIndex >= 0 && curValue < orgins[preIndex]) {// 复杂度为1+2+3+...+(n-1)
        // 前一位数的下一位等于前一位的数
        orgins[preIndex + 1] = orgins[preIndex];
        // 前一位的数等于当前数
        orgins[preIndex] = curValue;
        // 继续(前一位的前一位)
        preIndex = preIndex - 1;
      }
    }
    // 排序后的数
    for (int num : orgins) {
      System.out.print(num + "、");
    }
  }
}
相关文章
|
搜索推荐 Java
【Java】快速排序
【Java】快速排序
97 0
|
5月前
|
Java
归并排序(java)
归并排序(java)
|
5月前
|
Java
插入排序(java)
插入排序(java)
|
5月前
|
Java
快速排序(java)
快速排序(java)
|
5月前
|
Java
希尔排序(java)
希尔排序(java)
|
5月前
|
Java
选择排序(java)
选择排序(java)
|
6月前
|
算法 搜索推荐 Java
希尔排序(Java)
希尔排序(Java)
|
6月前
|
Java C++
快速排序(c++,java)
快速排序(c++,java)
31 0
|
搜索推荐 算法 Java
直接插入排序(Java)
直接插入排序(Java)
下一篇
无影云桌面