Java实现插入排序算法详解:图解原理与代码

小鹿同学
小鹿同学
发布时间:2026-10-15| 5人浏览过
原创

插入排序是基础且直观的排序算法,本文通过图文结合的方式,解析其在Java语言中的工作原理。从初始化已排序序列开始,逐步演示如何提取未排序元素、在已排序部分中从后向前比较并移动位置,最终插入正确位序。同时提供完整的Java代码示例,涵盖核心逻辑实现与测试验证。

一、基本思想

插入排序(Insertion Sort)的工作原理类似于整理手中的扑克牌。它通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并将其插入。这种算法在数据量较小或部分数据已经有序时表现良好。

二、算法分析

第1步:初始化已排序序列

目的:确立排序的起始基准。
操作:假设数组的第一个元素 (索引0) 已经是有序的。
状态:此时已排序区间包含第一个元素。

第2步:取出下一个待处理元素

目的:准备将新元素纳入有序序列。
操作:提取当前未排序部分的第一个元素(即当前遍历到的元素)。
参数:通常从索引 i=1 开始遍历。

第3步:从后向前扫描比较

目的:寻找新元素的正确插入位置。
操作:将取出的新元素与已排序序列中最后一个元素进行比较。
判断:如果已排序元素大于新元素,说明新元素应插在该元素之前或更前位置。

第4步:确定插入位置(无需移动情况)

目的:若新元素比已排序序列末尾元素大,则无需移动。
操作:比较发现 1 < 28(假设场景),条件不成立,直接在当前位置插入或认为位置已对。
完成状态:序列保持相对有序。

第5步:处理需要移动的情况

目的:为新元素腾出空间。
操作:当已排序元素大于新元素时,将该已排序元素向右移动一位(复制到下一个位置),为新元素让出空位,并继续向前比较前一个元素。

第6步:执行元素右移

目的:物理上移动数据以创建插入槽。
操作:检测到 28 > 3 成立,将值 28 移至当前位置,形成空缺,指针 preIndex 前移。

第7步:继续向前比较

目的:检查是否还有更大的已排序元素。
操作:新指针指向的元素 1 与新元素 3 进行比较。

第8步:最终插入

目的:将新元素放入确定的位置。
操作:因为 1 < 3,不再发生移动。将新元素 3 插入到当前空位(preIndex + 1)处。
结果:[1, 3, 28] 构成新的有序子序列。

第9步:重复迭代

目的:处理剩余所有未排序元素。
操作:重复步骤2至步骤8,直到遍历完整个数组,此时整个数组变为有序。

三、算法实现

以下是基于 Java 语言的插入排序标准实现。代码采用 in-place(原地)排序,时间复杂度为 O(n²),空间复杂度为 O(1)。

package com.algorithm.tenSortingAlgorithm;

import java.util.Arrays;

public class InsertionSort {
    private static void insertionSort(int[] arr) {
        int preIndex, current;
        // 从第二个元素开始遍历(索引1)
        for (int i = 1; i < arr.length; i++) {
            preIndex = i - 1;
            current = arr[i]; // 保存当前待插入元素
            
            // 从后向前扫描,若已排序元素大于当前元素,则后移
            while (preIndex >= 0 && arr[preIndex] > current) {
                arr[preIndex + 1] = arr[preIndex];
                preIndex--;
            }
            // 插入元素到正确位置
            arr[preIndex + 1] = current;
        }
    }

    public static void main(String[] args) {
        int[] arr = {1, 28, 3, 21, 11, 7, 6, 18};
        insertionSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}

以上就是Java中插入排序算法的原理与实现的详细内容,更多关于Java插入排序的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。