目录

一:插入排序思想​编辑

二:插入排序代码

三:结果


一:插入排序思想

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

算法实现:直接插入排序是将无序序列中的数据插入到有序的序列中,在遍历无序序列时,首先拿无序序列中的首元素去与有序序列中的每一个元素比较并插入到合适的位置,一直到无序序列中的所有元素插完为止。对于一个无序序列arr{4,6,8,5,9}来说,我们首先先确定首元素4是有序的,然后在无序序列中向右遍历,6大于4则它插入到4的后面,再继续遍历到8,8大于6则插入到6的后面,这样继续直到得到有序序列{4,5,6,8,9}。

(1)我们用一个变量tmp存放关键字,因为我们先确定第一个元素是暂时有序的,所以tmp存放无序序列的第二个元素,然后i开始也为第二个元素的下标,j则为i-1,因为j要用有序的区域元素来与无序的区域元素比较。那么一开始i=1,tmp=6,j=0,因为6>4,所以6就不用进行插入;然后i向右走,i=2,tmp=arr[2]=8,j=i-1=1,8>6>4也不用插入。

(2)i继续向右走,i=3,tmp=arr[3]=5,j=i-1=2,5<8则要将8给5所在的元素数据,j向左走继续遍历有序区域。

(3)当j向右走到6时发现6>tmp=5,所以将6给它右边的第一个值(j+1的位置),再继续遍历有序区域,j=0时发现4<5则j+1的位置就是5该在的位置那么就将tmp的值5给j+1的位置的元素的值。

(4)再继续上面的操作,i最后到9发现比前面有序区域的元素都大,则不用再插入了,这样就得到了一个有序序列{4,5,6,8,9}。

二:插入排序代码

public static void sort(int[] arrays) {int temp = 0;for(int i = 1; i <= arrays.length - 1; i++) {for(int j = i; j > 0; j--) {if(arrays[j - 1] > arrays[j]) {temp = arrays[j];arrays[j] = arrays[j - 1];arrays[j - 1] = temp; }else {//不满足条件结束循环即可break;}}}}

三:结果

java插入排序(含插入排序代码)相关推荐

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

    之前总结了交换排序的冒泡排序与选择排序的简单选择排序,这次我们来看看插入排序的简单插入排序~ 往期传送门: 冒泡排序: Java排序算法--冒泡排序(Bubble Sort)https://blog. ...

  2. Java实现(直接)插入排序

    Java实现(直接)插入排序 直接插入排序是指将一列乱序的数字逐个插入到队列中,在插入时小的放前面,大的放后面(指正序,逆序思路相反). 实现过程如下: 建立一个临时变量(也叫哨兵),将即将参与排序的 ...

  3. java快速排序直观演示代码,排序算法总结(含动图演示和Java代码实现)

    本文将围绕冒泡排序.桶排序.计数排序.堆排序.插入排序.并归排序.快速排序和选择排序,按照描述.时间复杂度(最坏情况).动态图展示和代码实现来讲解.本文默认排序为从小到大. 本文相关代码已上传至git ...

  4. C语言——十四种内部排序算法【直接插入排序-冒泡排序-选择排序-插入排序-希尔排序-归并排序-快速排序-堆排序-折半插入排序-二分查找-路插入排序-表插入排序-简单选择排序-直接选择排序-树形选择】

    目录: 一:插入排序 A:直接插入排序 1.定义: 2.算法演示 实例1: 3.基本思想 4.排序流程图 实例1: B:希尔排序 1.定义: 2.算法演示 实例2: C:其他插入排序 a:折半插入排序 ...

  5. 双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法

    双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法 一.理论描述 中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词 ...

  6. 插入排序:直接插入排序希尔排序

    一.直接插入排序 1. 思想 直接排序法, 可以分为两个部分, 一部分是有序的, 一部分是无序的. 从这个图上, 应该是能看清楚直接插入排序的思想了. 将无序部分的第一个与有序部分进行比较. 从有序部 ...

  7. 统计java文件中的代码行数

    统计Java代码行数工具类  --  CodeCounterUtil.java 统计指定目录下的java文件中代码行数  --  public static int  getCodeNumFromFo ...

  8. java主窗体设计代码_java窗体设计+GUI经典代码全放送

    [实例简介] java窗体设计经典代码,手把手叫你如何设计java窗体,编写应用程序. [实例截图] [核心代码] 57641e3b-d82c-4f28-bb29-35f951c1158d └── j ...

  9. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  10. java精确除法计算,四舍五入 Java问题通用解决代码

    java精确除法计算,四舍五入 Java问题通用解决代码 参考文章: (1)java精确除法计算,四舍五入 Java问题通用解决代码 (2)https://www.cnblogs.com/svenne ...

最新文章

  1. MLPerf训练最新发榜:谷歌、NV、浪潮 ,冠军榜“三国杀”
  2. html 根据坐标画多边形,28种css3绘制多边形代码分享
  3. Linux常用命令之rm
  4. 编程体系结构(07):JavaEE之Web开发
  5. 2015第25周三iframe小结
  6. DataNode之BlockSender分析
  7. [No0000FD]C# 正则表达式
  8. 查询出各个学科的前3名的同学信息的Sql
  9. 4-字符转换及所在位置
  10. java 华氏度_在Java中将华氏度转换为摄氏温度[重复] - java
  11. 【写作技巧】毕业论文写作要素和步骤有哪些呢?
  12. SilverLight自定义集合控件中的集合项数据绑定问题
  13. 购物车=收藏夹?一文理解淘宝购物车背后的逻辑
  14. 在chrome上安装印象笔记插件
  15. 教你微星电脑按f几重装系统
  16. 系统架构设计师考试总结
  17. 194.Vue.js智能扫码点餐系统(二十八)【支付宝支付流程、Nodejs支付源码解析、 实现支付功能(支付宝支付)】2019.04.01
  18. 【最短路算法】第二弹:一文弄懂Bellman-Ford(贝尔曼福特算法)
  19. ffmpeg+h264_nvenc+vs2019配置编译
  20. IOG交互软件---Intelligent Pixel Annotation Tool (IPAT)---安装说明

热门文章

  1. 基于JAVA+SpringMVC+Mybatis+Vue+MYSQL的共享单车管理系统
  2. ovftool工具的使用
  3. 人体红外测温仪PCBA方案
  4. Box2D 物理引擎入门
  5. SPI 转 CAN 接口
  6. MATLAB 用for语句实现循环结构 例题
  7. elementui table 在jsp页面中横向滚动条的问题
  8. php 获取首字母,PHP_php 获得汉字拼音首字母的函数,php获取汉字拼音的第一个字母 - phpStudy...
  9. Spring AOP 的底层实现
  10. Springboot之——不能交给Spring管理的类如何添加注解?