《插入排序》的思想以及代码实现--排序算法(三)

本文详细介绍了插入排序的概念、执行逻辑及图解过程,并提供了完整的Java代码实现。插入排序是一种简单的内部排序算法,通过不断地将未排序元素插入到已排序序列中的合适位置来实现排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

1.排序算法的分类

  1. 内部排序:
    指将需要处理的所有数据都加载到内部存储器(内存)中进行排序。
  2. 外部排序法:
    数据量过大,无法全部加载到内存中,需要借助外部存储(文件等)进行排序。
  3. 常见的排序算法分类
    在这里插入图片描述

一、插入排序(Insertion Sorting)的基本概念

1.基本介绍

插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。

2.执行逻辑

把 n 个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有 n-1 个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。

二、图解过程

  • 原始数据是{3,44,38,5,47}
    • 在这里插入图片描述
  1. 把3作为有序表的数,44,38,5,47后面的数据作为无序表的数,把44插入有序表。变成:有序表中有3,44 无序表中有38,5,47
  2. 同理直到无序表的数据都插入到有序表
  • 动态图展示(开始状态全为蓝色条)
    在这里插入图片描述
  • 完成后的数据
    • 在这里插入图片描述

三、代码实现

package com.datastructure.sort;

import java.util.Arrays;

/**
 * @author Hacah
 * @date 2020/10/11 20:59
 */
public class InsertSort {
    public static void main(String[] args) {
        int[] arr = {3, 6, 1, 7, 5};
        insertSort(arr);
    }

    public static void insertSort(int[] arr) {

        // 循环排序,从第二个数开始判断所以i=1。
        for (int i = 1; i < arr.length; i++) {
            // 要插入进有序表的数据
            int insertVal = arr[i];
            // 将要插入数据的位置,开始假设在前一个位置
            int insertIndex = i - 1;
            // 向前找到合适的插入位置,把数据向后移动
            while (insertIndex >= 0 && insertVal < arr[insertIndex]) {
                // 把数据后移
                arr[insertIndex + 1] = arr[insertIndex];
                // 把插入的位置向前移动
                insertIndex--;
            }

            // insertIndex + 1是插入的位置
            // 把数据插入找到的位置
            arr[insertIndex + 1] = insertVal;

            System.out.println("第"+i+"轮插入后的数据:");
            System.out.println(Arrays.toString(arr));

        }


    }
}

四、排序算法的情况

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值