Java直接插入排序
插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
算法步骤:
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直接插入排序相关推荐
- java中插入排序_Java中的插入排序
java中插入排序 Today we will look into the Insertion Sort Java program. Insertion sort is similar to Bubb ...
- JAVA 实现插入排序
JAVA 实现插入排序 代码示例: import java.util.Arrays;public class wdnmd {public static void main(String[] args) ...
- Java插空排序,Java直接插入排序法详解
前面给大家介绍过了冒泡排序法.选择排序法等等,下面就来给大家讲一下java直接插入排序法,一起通过文章来进行了解吧. 来看一下基本思想: 将n个有序数存放在数组a中,要插入的数为x,首先确定x插在数组 ...
- Java实现插入排序及其优化 insertion sort
本文带来八大排序算法之插入排序. 插入排序(Insertion Sort)属于内部排序算法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的. 插入排序基本思想: 把n个待排序的元 ...
- java实现插入排序和希尔排序
import java.util.Arrays;public class TestDemo{/*直接插入排序*/public static void insertSort(int[] arr){for ...
- java实现插入排序的详细代码
文章目录 插入排序的原理(从小到大) 代码实现 插入排序的原理(从小到大) ~~~~~~~ 从第二个数(即下标为1的元素)开始依次和其左侧的元素作比较,若左侧的数较小时,则把它和前面的的元 ...
- 回顾篇之Java的插入排序
前一段时间看到了一片文章<为什么我们要像驯化小狗狗一样驯化算法>,就一直在想我是否需要重头开始做一遍Java的基本算法排序,无论自己现在水平几何,都要回顾这些经典的,值得回味的程序片段. ...
- java 折半插入排序_[Java代码] Java实现直接插入排序和折半插入排序算法示例
1 排序思想: 将待排序的记录Ri插入到已经排好序的记录R1,R2,--,R(N-1)中. 对于一个随机序列而言,就是从第二个元素开始,依次将这个元素插入到它之前的元素中的相应位置.它之前的元素已经排 ...
- java排序——插入排序
2019独角兽企业重金招聘Python工程师标准>>> package jxau.blueDot.lyx;/*** * @author lyx* @下午6:42:21* @TODO: ...
- 【十大经典排序算法】java实现--插入排序(3)
插入排序概述 插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插 ...
最新文章
- ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS
- [转]什么是CMMI?
- 重启openssl服务linux,Nginx的启动、停止与重启---linux
- Spring-AOP @AspectJ切点函数之execution()
- 全面预测我国量子通信市场规模及发展趋势
- JS中对象创建的五中方式
- hive mysql5.7_安装并使用mysql5.7作为hive的metastore
- 产品经理如何洞察人性?
- STL札记2(序列容器vector、list、deque)
- 【渝粤题库】陕西师范大学165101社会学 作业(高起专)
- static数据的初始化
- windbg拦截驱动加载
- matlab中时域逐步积分方法,newmark积分法
- NDK crash分析方法
- 狮子鱼社区团购系统团长推广二维码不显示,以及选择地址失败的解决方案
- python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论——学霸君
- 元宇宙”成时下热点 中国古人是如何认识“宇宙”的?
- 创新实训【12】——热词查询功能
- android--新闻阅读器实现源码
- 打码平台php源码,正方验证码识别(非打码平台)(已解决运行出现4个#)
热门文章
- python 第一行 报错_解决python的空格和tab混淆而报错的问题
- mysql mysqldb_mysql模块mysqldb
- mysql 数据库安装命令_Mysql数据库的安装
- python如何实现单例模式_用Python实现设计模式——单例模式
- python递归实例_Python函数递归(带实例演示)
- 【SPOJ:FAVDICE】Favourite Dice(概率dp)
- 【UVA1592】Database (字符串读入技巧和map的使用)
- 十大排序算法——计数排序(C语言)
- C/C++[结构体]
- mysql读写分离中间件都有哪些_MySQL读写分离中间件Atlas