插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法步骤

1)将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。

2)从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

算法图示

算法基本性能

排序方法 平均时间复杂度情况 最好情况 最坏情况 空间复杂度 稳定性
插入排序 O(n2) O(n) O(n2) O(1) 稳定

Java代码

package com.sort;import java.util.Random;public class Main {// 从小到大private static void sort(int[] array) {if (array.length <= 1) {return;}for (int i = 1; i < array.length; i++) {/*** 因为0~i-1为有序的,如果i位置的大于i-1位置的,说明0~i也是有序的,* 反之需要在0~i-1直接找出i位置的元素的正确位置插入*/if (array[i] < array[i - 1]) {/*** 先保存i位置元素*/int temp = array[i];int j = i - 1;/*** 从i-1开始向前查找,一直到找到比i位置元素小的位置,然后插入*/for (; j >= 0 && array[j] > temp; j--) {/*** 没有找到,那么将此位置的元素后移一位,腾出位置*/array[j + 1] = array[j];}/*** 将i位置元素放在腾出的位置上面*/array[j + 1] = temp;}}}/*** 获取指定长度的随机数组*/public static int[] getRandomArray(int n) {int[] array = new int[n];Random random = new Random();for (int i = 0; i < array.length; i++) {array[i] = random.nextInt(500);}return array;}/*** 打印指定数组*/public static void outputArray(int[] array) {for (int i : array) {System.out.print(i + " ");}System.out.println("");}public static void main(String[] args) {int[] array = getRandomArray(10);outputArray(array);sort(array);outputArray(array);}
}

转载于:https://www.cnblogs.com/alias-blog/p/5786570.html

Java直接插入排序相关推荐

  1. java中插入排序_Java中的插入排序

    java中插入排序 Today we will look into the Insertion Sort Java program. Insertion sort is similar to Bubb ...

  2. JAVA 实现插入排序

    JAVA 实现插入排序 代码示例: import java.util.Arrays;public class wdnmd {public static void main(String[] args) ...

  3. Java插空排序,Java直接插入排序法详解

    前面给大家介绍过了冒泡排序法.选择排序法等等,下面就来给大家讲一下java直接插入排序法,一起通过文章来进行了解吧. 来看一下基本思想: 将n个有序数存放在数组a中,要插入的数为x,首先确定x插在数组 ...

  4. Java实现插入排序及其优化 insertion sort

    本文带来八大排序算法之插入排序. 插入排序(Insertion Sort)属于内部排序算法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的. 插入排序基本思想: 把n个待排序的元 ...

  5. java实现插入排序和希尔排序

    import java.util.Arrays;public class TestDemo{/*直接插入排序*/public static void insertSort(int[] arr){for ...

  6. java实现插入排序的详细代码

    文章目录 插入排序的原理(从小到大) 代码实现 插入排序的原理(从小到大) ~~~~~~~       从第二个数(即下标为1的元素)开始依次和其左侧的元素作比较,若左侧的数较小时,则把它和前面的的元 ...

  7. 回顾篇之Java的插入排序

    前一段时间看到了一片文章<为什么我们要像驯化小狗狗一样驯化算法>,就一直在想我是否需要重头开始做一遍Java的基本算法排序,无论自己现在水平几何,都要回顾这些经典的,值得回味的程序片段. ...

  8. java 折半插入排序_[Java代码] Java实现直接插入排序和折半插入排序算法示例

    1 排序思想: 将待排序的记录Ri插入到已经排好序的记录R1,R2,--,R(N-1)中. 对于一个随机序列而言,就是从第二个元素开始,依次将这个元素插入到它之前的元素中的相应位置.它之前的元素已经排 ...

  9. java排序——插入排序

    2019独角兽企业重金招聘Python工程师标准>>> package jxau.blueDot.lyx;/*** * @author lyx* @下午6:42:21* @TODO: ...

  10. 【十大经典排序算法】java实现--插入排序(3)

    插入排序概述 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插 ...

最新文章

  1. ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS
  2. [转]什么是CMMI?
  3. 重启openssl服务linux,Nginx的启动、停止与重启---linux
  4. Spring-AOP @AspectJ切点函数之execution()
  5. 全面预测我国量子通信市场规模及发展趋势
  6. JS中对象创建的五中方式
  7. hive mysql5.7_安装并使用mysql5.7作为hive的metastore
  8. 产品经理如何洞察人性?
  9. STL札记2(序列容器vector、list、deque)
  10. 【渝粤题库】陕西师范大学165101社会学 作业(高起专)
  11. static数据的初始化
  12. windbg拦截驱动加载
  13. matlab中时域逐步积分方法,newmark积分法
  14. NDK crash分析方法
  15. 狮子鱼社区团购系统团长推广二维码不显示,以及选择地址失败的解决方案
  16. python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论——学霸君
  17. 元宇宙”成时下热点 中国古人是如何认识“宇宙”的?
  18. 创新实训【12】——热词查询功能
  19. android--新闻阅读器实现源码
  20. 打码平台php源码,正方验证码识别(非打码平台)(已解决运行出现4个#)

热门文章

  1. python 第一行 报错_解决python的空格和tab混淆而报错的问题
  2. mysql mysqldb_mysql模块mysqldb
  3. mysql 数据库安装命令_Mysql数据库的安装
  4. python如何实现单例模式_用Python实现设计模式——单例模式
  5. python递归实例_Python函数递归(带实例演示)
  6. 【SPOJ:FAVDICE】Favourite Dice(概率dp)
  7. 【UVA1592】Database (字符串读入技巧和map的使用)
  8. 十大排序算法——计数排序(C语言)
  9. C/C++[结构体]
  10. mysql读写分离中间件都有哪些_MySQL读写分离中间件Atlas