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

JAVA之插入排序

插入排序基本思想:将一个未排序的数列,按其大小插入前面已经排好的序列适当位置上,直到全部插入完为止。

抽象的思想往往真的是很让人头痛呀,其实很简单。平时大家打扑克牌的时候,采用的就是插入排序。仔细想想看,当我们摸上第一张扑克牌时,默认我们手里的排就是有序的,因为就只有一张。当我们摸上第二张扑克牌时,会根据第二张的大小,跟第一张进行比较,决定第二张扑克牌是该放在第一张的左边还是右边。重复这样的过程,直到桌上的扑克牌摸完。这时我们会发现自己手里的排是有序的,这种有序的排列就是插入排序。

用一个简单的Demo,展示一下Java实现插入排序的过程:

public static void main(String[] args) {
        int a []  =  {4,20,7,3,1};
        int c [] = insertSort(a);
        for (int i = 0; i < c.length; i++) {
            System.out.print(c[i]+"     ");
        }

    }
    public static int [] insertSort(int a[]){
        int insertNode ;
        int j;
        for(int i=1;i<a.length;i++){
            insertNode = a[i];
            j = i-1;
            while(j>=0 && a[j]>insertNode){
                a[j+1] = a[j];
                j--;
            }
            a[j+1] = insertNode;
            /*-------------------此段代码只是为了研究插入排序运行流程而添加-----------------------*/
            for (int k = 0; k < a.length; k++) {
                System.out.print(a[k]+"   ");
            }
            System.out.println();
            /*-------------------此段代码只是为了研究插入排序运行流程而添加-----------------------*/
        }
        return  a;
    }

流程解析:

未排序数列:4,20,7,3,1

---------------------------------------------------------------------------------------------------------------------------------

第一趟排序:

排序前数据:4   20   7   3   1  

默认一个数据4是有序的,4和20进行比较,发现4和20是有序数列,不用变。

排序结果:4   20   7   3   1  

---------------------------------------------------------------------------------------------------------------------------------

第二趟排序:

排序前数据:4   20   7   3   1  

首先20和7比较,交换位置。其次4和7比较,有序不变。

排序结果:4   7   20   3   1    

---------------------------------------------------------------------------------------------------------------------------------

第三趟排序:

排序前数据:4   7   20   3   1    

首先3和20比较,交换位置。其次3和7比较,交换位置。最后4和3比较,交换位置。

排序结果:3   4   7   20   1  

---------------------------------------------------------------------------------------------------------------------------------

第四趟排序:

排序前数据:3   4   7   20   1    

首先20和1比较,交换位置。7和1比较,交换位置。4和1比较,交换位置。最后3和1比较,交换位置。

排序结果:1   3   4   7   20    

---------------------------------------------------------------------------------------------------------------------------------

总结:小弟总结总结自己所学知识,望路过大神勿喷哈。谢谢!!!

相关文章:

  • JAVA之类,构造函数和构造代码块
  • JAVA面试题之冒泡排序,插入排序及选择排序
  • Linux安装JDK步骤
  • Linux之ssh,scp命令的使用
  • Linux之ssh免密登录
  • Hadoop-2.8.0安装教程---单机/伪分布式配置
  • Java之序列化与反序列化
  • Hadoop之常用shell命令整理
  • Itext笔记之pdf页眉页脚
  • JAVA操作HDFS案例
  • zookeeper-3.4.10安装教程---分布式配置
  • storm-1.1.0安装教程---分布式配置
  • Hadoop之HDFS分布式文件系统读写流程详解
  • Zookeeper之常用API详解
  • Docker之Docker介绍及安装配置
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [LeetCode] Wiggle Sort
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • 03Go 类型总结
  • AWS实战 - 利用IAM对S3做访问控制
  • HTTP请求重发
  • js对象的深浅拷贝
  • leetcode98. Validate Binary Search Tree
  • Redis中的lru算法实现
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • 基于Android乐音识别(2)
  • 小李飞刀:SQL题目刷起来!
  • 白色的风信子
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #13 yum、编译安装与sed命令的使用
  • #LLM入门|Prompt#3.3_存储_Memory
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1)常见O(n^2)排序算法解析
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (一)基于IDEA的JAVA基础12
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET 解决重复提交问题
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET连接MongoDB数据库实例教程
  • @JsonSerialize注解的使用
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @四年级家长,这条香港优才计划+华侨生联考捷径,一定要看!
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [ SNOI 2013 ] Quare
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [20171102]视图v$session中process字段含义
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)
  • [BZOJ1060][ZJOI2007]时态同步 树形dp