插入排序概述

  • 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
  • 插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。
  • 将第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
  • 从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置
public class ArrayDemo {/*插入排序:从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。*/public static void main(String[] args) {//定义一个数组int[] arr = {24, 69, 80, 57, 13};System.out.println("排序前:" + arrayToString(arr));// 从下标为1的元素开始选择合适的位置插入,因为下标为0的只有一个元素,默认是有序的for (int i = 1; i < arr.length; i++) {// 记录要插入的数据int tmp = arr[i];// 从已经排序的序列最右边的开始比较,找到比其小的数int j = i;while (j > 0 && tmp < arr[j - 1]) {arr[j] = arr[j - 1];j--;}// 存在比其小的数,插入if (j != i) {arr[j] = tmp;}}System.out.println("排序后:" + arrayToString(arr));}//把数组中的元素按照指定的规则组成一个字符串:[元素1, 元素2, ...]public static String arrayToString(int[] arr) {StringBuilder sb = new StringBuilder();sb.append("[");for (int i = 0; i < arr.length; i++) {if (i == arr.length - 1) {sb.append(arr[i]);} else {sb.append(arr[i]).append(", ");}}sb.append("]");String s = sb.toString();return s;}
}

输出结果

【十大经典排序算法】java实现--插入排序(3)相关推荐

  1. 数据结构十大经典排序算法--Python

    十大经典排序算法 (java实现看这个)https://program.blog.csdn.net/article/details/83785159 名词解释: 1.冒泡排序 2.选择排序 3.插入排 ...

  2. 终于,把十大经典排序算法汇总了!(Java实现版)

    转载自  终于,把十大经典排序算法汇总了!(Java实现版) 最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在" ...

  3. 十大经典排序算法(Java实现)

    排序算法的重要性不言而喻,为了加深对这十种算法的理解,固写此文. 目录 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序(Insertion Sort ...

  4. 【完整可运行源码+GIF动画演示】十大经典排序算法系列——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    以前也零零碎碎发过一些排序算法,但总是不系统, 这次彻底的对排序系列做了一个整体的规划, 小伙伴们快快mark哦~ [GIF动画+完整可运行源代码]C++实现 冒泡排序--十大经典排序算法之一 [GI ...

  5. 【GIF动画+完整可运行源代码】C++实现 插入排序——十大经典排序算法之三

    十大经典排序算法系列博客-->传送门 插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法步骤: 从第一个元素开始,该元素认为已经被排序: ...

  6. 十大经典排序算法详解(一)冒泡排序,选择排序,插入排序

    养成习惯,先赞后看!!! 你的点赞与关注真的对我非常有帮助.如果可以的话,动动手指,一键三连吧!!! 目录 1.算法的评判标准 2.排序算法的分类 3.十大经典排序算法-冒泡排序,选择排序,插入排序 ...

  7. 十大经典排序算法动画与解析,看我就够了

    作者 | 程序员小吴 转载自五分钟学算法(ID: CXYxiaowu) 排序算法是<数据结构与算法>中最基本的算法之一. 排序算法可以分为内部排序和外部排序.内部排序是数据记录在内存中进行 ...

  8. 十大经典排序算法详细总结 图形展示 代码示例

    文章目录 十大经典排序算法详细总结 0.排序算法说明 1.冒泡排序(Bubble Sort) 2.选择排序(Selection Sort) 3.插入排序(Insertion Sort) 4.希尔排序( ...

  9. 冒泡和快速排序的时间复杂度_十大经典排序算法——快速排序

    目录 1.1.排序分类 1.2.排序的定义: 对一序列对象根据某个关键字进行排序. 1.3.术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面. 不稳定:如果a原本在b的前面,而a ...

  10. 一文搞定十大经典排序算法

    更多内容关注公众号:SAP Technical 一.排序算法概述 1.定义 将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序. 2.分类 十种常见排序算法可以分为两大类: 非线性时间 ...

最新文章

  1. 开发75条(写的不错) 选择自 churujianghu 的 Blog
  2. 时间管理类APP的Demo版本
  3. 如何在SQL Server 2016中使用R合并和拆分CSV文件
  4. 最简单的字符串算式计算方法
  5. 【多元统计分析】11.回归方程与回归系数的显著性检验
  6. linux ss服务器,【ss】Linux上ss命令的安装与使用
  7. XML语言的基本语法-Java Web
  8. Linux系统中修复SambaCry漏洞(CVE-2017-7494)
  9. springboot Could not resolve placeholder
  10. 十进制与二进制相互转换(c++)
  11. java毫秒_JAVA中怎么获取毫秒和微秒数
  12. dct椒盐噪声去噪效果不好_椒盐噪声去除方法分析及对比研究
  13. HEAD detached at ---
  14. 【Educational Codeforces Round 61 (Rated for Div. 2) D.Stressful Training】二分
  15. JAVA中级二 输入输出流,常见文件操作
  16. java5的新特性fore和可变参数
  17. WEB电商项目广告管理与缓存解决方案
  18. 基于PHP+小程序(MINA框架)+Mysql数据库的评选投票小程序系统设计与实现
  19. 晶振原理详解及测试方法
  20. 字符串的方法练习------Python篇

热门文章

  1. 点击别的地方隐藏下拉列表
  2. Linux ext3grep 恢复数据
  3. 实施TDD时的常见问题
  4. PB做的史上最强的矢量图监控软件(什么组态软件与监控软件的核心都源于此原理)...
  5. golang中的strings.LastIndexAny
  6. muduo之AsyncLogging
  7. 一个程序看fputc和fgetc
  8. 贫血模型,充血模型(领域驱动设计)
  9. jsp内置对象与el内置对象
  10. linux目录结构及常用命令