亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 插入排序算法详解:核心原理、完整代码与步骤演示

什么是插入排序?

插入排序是一种简单直观的排序算法,适合小规模或近乎有序的数据集。每次迭代取出一个元素,与已排序部分的元素从后向前比较,找到合适位置插入。

插入排序最坏/平均 O(n²),最好 O(n)(已有序)。它是原地、稳定排序,仅需常数额外空间。

插入排序算法流程图解

Java 插入排序算法详解:核心原理、完整代码与步骤演示

插入排序算法流程演示

Java 程序示例:使用插入排序对数组排序

package com.guru99;

public class InsertionSortExample {
    public static void main(String a[]) {
        int[] myArray = {860, 8, 200, 9};
        System.out.println("插入排序前");
        printArray(myArray);
        insertionSort(myArray);
        System.out.println("插入排序后");
        printArray(myArray);
    }

    public static void insertionSort(int arr[]) {
        int n = arr.length;
        for (int i = 1; i < n; i++) {
            System.out.println("第 " + i + " 趟排序");
            int key = arr[i];
            int j = i - 1;
            while ((j > -1) && (arr[j] > key)) {
                System.out.println("比较 " + key + " 和 " + arr[j]);
                arr[j + 1] = arr[j];
                j--;
            }
            arr[j + 1] = key;
            System.out.println("插入元素: 插入后数组");
            printArray(arr);
        }
    }

    static void printArray(int[] array) {
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i] + " ");
        }
        System.out.println();
    }
}

代码运行输出

插入排序前
860 8 200 9
第 1 趟排序
比较 8 和 860
插入元素: 插入后数组
8 860 200 9
第 2 趟排序
比较 200 和 860
插入元素: 插入后数组
8 200 860 9
第 3 趟排序
比较 9 和 860
比较 9 和 200
插入元素: 插入后数组
8 9 200 860
插入排序后
8 9 200 860

算法特性总结

对比:插入排序 vs 冒泡排序 vs 选择排序

算法最好平均最差稳定备注
插入排序O(n)O(n²)O(n²)✓近乎有序时极快
冒泡排序O(n)O(n²)O(n²)✓教学用为主
选择排序O(n²)O(n²)O(n²)✗交换次数最少

java

  1. C 语言 calloc() 详解:零初始化动态分配原理与实战案例
  2. Java Hello World 入门教程:从 JDK 安装到编译运行第一个程序
  3. Java 封装完全指南:数据隐藏、访问器/修改器、实战案例与核心优势
  4. Java 变量与数据类型完全指南(含示例)
  5. Java 类与对象:核心概念与实战示例
  6. Java String length() 方法:获取字符串长度(示例)
  7. Java String.charAt() 详解:语法、返回类型、异常与实战示例
  8. Java String.contains() 方法:检查子字符串是否存在(实战示例)
  9. 精通 Java String.endsWith():检查字符串后缀(示例)
  10. Java BufferedReader 读取文件:实战指南与示例
  11. Java 冒泡排序详解:核心原理、完整代码与步骤演示
  12. Java 选择排序详解:核心原理、完整代码与步骤演示