回顾篇之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 + "、");
    }
  }
}



相关文章
|
1月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--插入排序
数据结构与算法(Java篇)笔记--插入排序
|
1月前
|
搜索推荐 Java
Java实现插入排序算法
Java实现插入排序算法
11 0
|
1月前
|
搜索推荐 Java
Java代码插入排序
Java代码插入排序
10 0
|
3月前
|
Java Go C++
Golang每日一练(leetDay0116) 路径交叉、回文对
Golang每日一练(leetDay0116) 路径交叉、回文对
30 0
Golang每日一练(leetDay0116) 路径交叉、回文对
|
8月前
|
机器学习/深度学习 搜索推荐 算法
面试时常常考察的java排序算法--选择排序、冒泡排序、插入排序
面试时常常考察的java排序算法--选择排序、冒泡排序、插入排序
|
4月前
|
Java
LowB三人组--插入排序原理和java实现
LowB三人组--插入排序原理和java实现
|
8月前
|
算法 Java 索引
java基础算法系列(四)(直接插入排序以及二分插入讲解)
java基础算法系列(四)(直接插入排序以及二分插入讲解)
|
9月前
|
搜索推荐 算法 Java
【算法】插入排序的原理与Java实现
插入排序(Insertion Sort)是一种简单直观的排序算法,它通过构建有序序列,对未排序的元素逐个插入到已排序的序列中。插入排序的核心思想是将待排序的元素与已排序的元素逐个比较并移动,直到找到合适的位置插入。
98 1
|
11月前
|
算法
java202303java学习笔记第三十天插入排序和递归算法5
java202303java学习笔记第三十天插入排序和递归算法5
35 0
|
11月前
|
算法
java202303java学习笔记第三十天插入排序和递归算法1
java202303java学习笔记第三十天插入排序和递归算法1
34 0