插入排序算法(Java代码实现)

简介: 这篇文章通过Java代码示例详细解释了插入排序算法的实现过程,包括算法的基本思想、核心代码、辅助函数以及测试结果,展示了如何通过插入排序对数组进行升序排列。

其它经典排序算法:https://blog.csdn.net/weixin_43304253/article/details/121209905

插入排序算法:

思路:将数据分为已经排序好的数据和未排序的数据。取出未排序中的数据、从后向前的形式找到其在已经排好序数据中的位置、然后插入该数据。

过程

  • 1、将数据分为已排序和未排序两组。默认第一个数据是已排序
  • 2、从未排序数据中从前往后的顺序取出数据、和已经排好序的数据比较(从后向前比较)
  • 3、如果取出的未排序数据小于拍好序的数据、则将拍好序的数据向后移动
  • 4、找到当前的未排序数据在排序好数据中的插入位置、放入该数据
  • 5、再次从未排序数据中取出下一个数据、重复2-5

图解过程

在这里插入图片描述
代码实现

package com.zheng.dao;

import java.util.Random;


//插入排序算法
public class TestInsertDemo {
    /**
     * 1、思想:将数据分为已经排序好的数据和未排序的数据。取出未排序中的数据、从后向前的形式找到其在已经排好序数据中的位置、然后插入该数据
     */

    public int[] insertArr(int[] arr) {
        int len = arr.length;
        if (len < 0) { //数组长度为零、返回null
            return null;
        } else {

            for (int i = 0; i < len - 1; i++) {
                int current = arr[i + 1];//已经拍好序的下一个元素位置。(还未进行排序的第一个位置)
                int index = i;
                //然后将这个元素和之前拍好序的数组进行比较、将该数据放入合适的位置
                while (index >= 0 && current < arr[index]) {//如果当前的数据比拍好序列的最后一个数据小
                    arr[index + 1] = arr[index];//将当前的数据向后移动一位
                    index--;
                }
                arr[index + 1] = current;//经过一轮的比较、找到放入新数据的位置
            }

        }

        return arr;
    }


    //随机生成一个数组
    public int[] randomArr(int len, int maxNum, int minNum) {
        int[] arr = new int[len];//定义一个一维数组
        Random random = new Random();
        for (int i = 0; i < len; i++) {
            arr[i] = random.nextInt(maxNum - minNum + 1) + minNum;
        }
        return arr;
    }

    //打印
    private void Print(int[] arr) {
        int len = arr.length;
        System.out.print("【");
        for (int i = 0; i < len; i++) {
            if (i == len - 1) {
                System.out.print(arr[i]);
            } else {
                System.out.print(arr[i] + "、");
            }
        }
        System.out.println("】");
    }


    public static void main(String[] args) {
        TestInsertDemo testInsertDemo = new TestInsertDemo();

        int[] arr = testInsertDemo.randomArr(10, 100, 50);
        System.out.print("生成的随机数组:");
        testInsertDemo.Print(arr);
        System.out.print("选择排序后数据:");
        testInsertDemo.insertArr(arr);
        testInsertDemo.Print(arr);

    }
}

测试1:
在这里插入图片描述
测试2:
在这里插入图片描述
测试3:
在这里插入图片描述

相关文章
|
1天前
|
消息中间件 存储 Java
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
大数据-58 Kafka 高级特性 消息发送02-自定义序列化器、自定义分区器 Java代码实现
13 3
|
2天前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
19 3
|
1天前
|
消息中间件 Java 大数据
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
大数据-56 Kafka SpringBoot与Kafka 基础简单配置和使用 Java代码 POM文件
14 2
|
1天前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
14 2
|
1天前
|
算法 Java 数据中心
探讨面试常见问题雪花算法、时钟回拨问题,java中优雅的实现方式
【10月更文挑战第2天】在大数据量系统中,分布式ID生成是一个关键问题。为了保证在分布式环境下生成的ID唯一、有序且高效,业界提出了多种解决方案,其中雪花算法(Snowflake Algorithm)是一种广泛应用的分布式ID生成算法。本文将详细介绍雪花算法的原理、实现及其处理时钟回拨问题的方法,并提供Java代码示例。
10 2
|
6天前
|
存储 Java 数据安全/隐私保护
Java中的域,什么是域?计算机语言中的域是什么?(有代码实例)
文章解释了Java中域的概念,包括实例域、静态域、常量域和局部域,以及它们的特点和使用场景。
16 2
|
5天前
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
34 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
5天前
|
Java
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
本文介绍了Java中this和super关键字的用法,包括在构造方法中使用this来区分参数和成员变量、使用super调用父类构造方法和方法,以及它们在同一个方法中同时使用的场景。
26 0
Java关键字 —— super 与 this 详细解释!一看就懂 有代码实例运行!
|
5天前
|
Java
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
这篇文章详细解释了Java中static和final关键字的用法,包括它们修饰类、方法、变量和代码块时的行为,并通过代码示例展示了它们的具体应用。
33 0
Java关键字 —— static 与 final 详细解释!一看就懂 有代码实例运行!
|
6天前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
9 0