当前位置: 首页 > article >正文

Java算法—插入排序(Insertion Sort)

插入排序(Insertion Sort)

插入排序 Insertion Sort

  • 插入排序(Insertion Sort)
    • 核心思路
    • 代码实现

核心思路

基本思想:每一步将一个待排序的数据插入到前面已经排好序的有序序列中,直到插完所有元素为止。

将0索引的元素到N索引的元素看做是有序的,把N+1索引的元素到最后一个当成是无序的。

遍历无序的数据,将遍历到的元素插入有序序列中适当的位置,保持升序排列,如遇到相同数据,插在后面。

插入排序在插入的时候,有优化算法,在遍历有序序列找正确位置时,可以采取二分查找

排序结束后,默认是升序结果。

N的范围:0~最大索引

代码实现

在这里插入图片描述

public class InsetSort {
    public static void main(String[] args) {
        int[] arr = {3,66,55,22,88,11};
        // 1.找打无序的那一组数组是从哪个索引开始的
        int startIndex =-1;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i]>arr[i+1]){
                //无序数组从startIndex索引开始
                startIndex= i+1;
                break;
            }
        }
        // 遍历无序那组数据
        for (int i = startIndex; i < arr.length; i++) {
            // 记录当前无序数组中要插入数据的索引
            int j =i;
            while (j>0 && arr[j]<arr[j-1]){
                // 交换位置
                int temp = arr[j];
                arr[j] = arr[j-1];
                arr[j-1] = temp;
                j--;
            }
        }
        // 遍历输出
        for (int i : arr) {
            System.out.print(i+" ");
        }
    }
}

System.out.print(i+" ");
}
}
}



http://www.kler.cn/news/284864.html

相关文章:

  • 一种导出PPT到MP4的方法
  • 大数据测试怎么做,数据应用测试、数据平台测试、数据仓库测试
  • ​T​P​一​面​
  • 系统编程-消息队列
  • 力扣2116.判断一个括号字符串是否有效
  • Qt_信号槽机制
  • 计算机网络概述(网络结构)
  • MYSQL——聚合查询
  • B树及其Java实现详解
  • 续:MySQL的半同步模式
  • APO 新发版支持Skywalking Agent接入
  • unity的问题记录(信息管理)
  • 【Java设计模式】责任链模式:构建强大的请求处理机制
  • 技术成神之路:设计模式(十二)模板方法模式
  • SQL存储过程:数据库编程的瑞士军刀
  • Java中的注解(Annotation)
  • 谷粒商城实战笔记-269~271-商城业务-订单服务-bug修改
  • Python3遍历文件夹下的文件
  • AI编码新时代:免费人工智能助手Blackbox AI
  • Spring Boot 集成 JdbcTemplate(盘它!)
  • 使用WSL在Windows上安装Linux
  • 【微信小程序】SpringBoot集成微信小程序(多小程序集成)
  • opencv/c++的一些简单的操作(入门)
  • 趣味算法------多重背包问题
  • 【拉取Git项目到本地,知识小记,后续再改】
  • EmguCV学习笔记 VB.Net 8.1 漫水填充法 floodFill
  • volatile 关键字
  • Mac 安装Hadoop教程
  • 【算法每日一练及解题思路】计算以空格隔开的字符串的最后一个单词的长度
  • Linux - 如何在 Linux 中使用`find` 命令