插入排序法思想:

插入排序的基本思想是:把n个待排序的元素看成一个有序表和一个无序表,开始时有序表只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。
下图中的初始状态时,17就为有序表中的一个元素,剩下的元素都包含在无序表中,然后取数据3与17进行比较,然后插入到合适的位置,依次循环。插入排序的插入次数是n-1次,也就是数组长度-1次。

代码实现:

//插入排序法
public class InsertSort {public static void main(String[] args) {// TODO Auto-generated method stubint[] arr = {100,20,40,1};insertSort(arr);}public static void insertSort(int[] arr) {for(int i = 1 ; i< arr.length;i++) {int insertVal = arr[i]; //定义待插入的数据int insertIndex = i-1; //定义待插入数据的前一个数据的下标//insertIndex >= 0  判断待插入数的前一个数下标 是不是大于等于0  如果不是的话  寄说明下标越界了  即保证数组不越界//insertVal < arr[insertIndex]  判断待插入数是否小于前一位数据  如果小的话再去更换位置 while(insertIndex >= 0 && insertVal < arr[insertIndex]) { //这一步就是在待插入数小于前一位数的情况下  将前一位数后移 //注意:以上数组为例,移动后的数组为{100,100,40,1} 并不是{20,100,40,1}//在一开始 我们就将待插入数取了出来 定义到了insertVal中 arr[insertIndex+1] = arr[insertIndex]; insertIndex--; }//当跳出while循环 说明插入的位置已经找到了  位置下标为 inserIndex+1 //说明下位置下标为什么是inserIndex+1   比如数组为{20,30,40}//当30和20比较的时候 30比20大 就不需要移动位置了 这是30应该所处的位置下标就是1//而insertIndex是0  所以 待插入数的位置下标应该是insertIndex + 1;arr[insertIndex + 1] = insertVal;System.out.println("第"+i+"次排序");System.out.println(Arrays.toString(arr));}}}

冒泡排序
选择排序

插入排序法(思路及代码实现)相关推荐

  1. 数据结构 - 直接插入排序法

    数据结构 - 直接插入排序法. 之前的博文已经介绍了 冒泡排序法 和 简单选择排序法. 其实上面两种的基本思路是一样的, 就是通过两层循环, 在每1个内循环中找到1个未排序的极值元素, 然后把这个元素 ...

  2. 经典算法之直接插入排序法

    活动地址:21天学习挑战赛 文章目录 一.插入排序的基本思想 二.直接插入排序法 1.算法步骤 2.排序过程 3.算法实现 4.复杂度分析 三.每日一练 解题思路 解题代码 一.插入排序的基本思想 每 ...

  3. python中怎么比较两个列表的大小_python中对列表元素大小排序(冒泡排序法,选择排序法和插入排序法)—排序算法...

    前言 排序(Sorting) 是计算机程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列.本文主要讲述python中经常用的三种排序算法,选择排序法 ...

  4. python拼图游戏代码的理解_有意思的JS(1)拼图游戏 玩法介绍及其代码实现

    我是你们的索儿呀,很幸运我的文章能与你相见,愿萌新能直观的感受到Javascript的趣味性,愿有一定基础者有所收获,愿大佬不吝赐教 拼图游戏是一张图片分为若干块,打乱次序,将其中一块变为空白块,其只 ...

  5. java插入法排序_java算法之插入排序法

    思想:插入排序法的思想就是从数组的第二个元素开始,将数组中的每一个元素按照规则插入到已排好序的数组中以达到排序的目的.一般情况下将数组的第一个元素作为启始元素,从第二个元素开始依次插入.由于要插入到的 ...

  6. C语言编程>第二十三周 ③ 下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本算法是:先对字符串中的头两个元素进行排序;然后把第三字符插入

    例题:下列给定程序中,函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序.插入法的基本算法是:先对字符串中的头两个元素进行排序:然后把第三字符插入到前两个字符中,插入后前三个字 ...

  7. PC版微信加密图片解密思路与代码实现_Python

    PC版微信加密图片解密思路与代码实现_Python 前言 PC版的微信会加密存储用户接受到的所有图片信息. 存储路径为 C:\Users\用户名\Documents\WeChat Files\微信号\ ...

  8. 青蛙跳石头java_Java青蛙跳台阶问题的解决思路与代码

    问题描述 一只青蛙一次可以跳上1级台阶,也可以一次跳上2级台阶,请问跳上n级台阶,该请娃一共有多少种跳法? 解决思路 ①如果只有1级台阶,那显然只有一种跳法. ②如果有2级台阶,那么就有2种跳法,一种 ...

  9. C++实现直接插入排序法

    直接插入排序法是将当前元素按照值大小,插入到有序元素组中的适当位置的一种排序方法.最直观的例子是玩扑克牌斗地主,每次摸牌之前,手上的牌是已经按大小排好顺序的,每次摸的牌都要插入到合适的位置.直接插入排 ...

最新文章

  1. key设计 短信验证存redis_Redis存储Key的一种设计实现方式:模式匹配
  2. springboot 整合mybatis_SpringBoot整合MyBatis框架快速入门
  3. SpringBoot集成MybatisPlus 涵盖了目前流行的知识点!!!即用即cv即可!!!学过的同学,也可以存储作为工具!!
  4. 银屑病与寿命的关系(调研手稿七)
  5. android studio开源代码,Android Studio Set of source 代码源集
  6. C++笔记-使用std::funcional代替函数指针
  7. PAT 1017 Queueing at Bank[一般]
  8. 关于CDN加速服务器的几个问题
  9. kaggle账号_kaggle是什么?对找工作的帮助!如何入门kaggle?
  10. Chromium引擎控件DotNetBrowser V1.14发布 | 附下载
  11. 安装vs2008之后系统好像变慢了?
  12. linux查看redis安装目录
  13. 【统计学】基本Stata使用手册:合集
  14. 高德地图vs百度地图
  15. 华为x86服务器销售额,x86服务器销量排行
  16. 公众号采集,公众号批量自动采集,微信公众号免费文章采集
  17. 复旦大学python教学视频_B站资源推荐:复旦大学机器学习、深度学习公开课,附PDF课件下载...
  18. React---关于useCallback和useMemo的详解
  19. L84.linux命令每日一练 -- 第11章 Linux系统管理命令 -- rpm和yum
  20. 编译原理(1)词法分析程序(C++实现)

热门文章

  1. BCS和ECCS等合并系统简单对比
  2. 企业移动应用平台:走进SAP SUP的世界
  3. ABAP 新建session会话的函数
  4. SAP 常用查看库存的T-CODES
  5. ABAP日期函数(求月末日,第几周,search help 只显示年月) 使用方法实例
  6. mysql如何查询本年_mysql 查询本月、本年的数据
  7. 服务中启动oracle服务,Linux下如何自动启动Oracle服务
  8. ajax html xml数据格式,AJAX | 数据格式JSON与XML的区别
  9. 10显示不支持导入dwg文件_Global Mapper中80坐标系高程DEM与kml文件叠加实例
  10. 如何用python生成表格_用 Python 生成 HTML 表格