package com.rao.linkList;

import java.util.Arrays;

/**
* @author Srao
* @className InsertSort
* @date 2019/12/4 12:02
* @package com.rao.linkList
* @Description 插入排序
*/
public class InsertSort { /**
* 插入排序
* @param arr
*/
public static void insertSort(int[] arr){
for (int i = 1; i < arr.length; i++){ //先把要插入的数保存下来
int temp = arr[i]; int k = i-1; //找到第一个比它小的数的下标
while (k >=0 && arr[k] > temp){
k--;
} //把较小的元素之前的元素全部后移一位,为要插入的元素空出一个位置
for (int j = i; j > k+1; j--){
arr[j] = arr[j-1];
} //插入这个元素到第一个比它小的元素的前面
arr[k+1] = temp;
}
} public static void main(String[] args) {
int[] arr = new int[]{3,6,2,5,9,1,0,8};
System.out.println(Arrays.toString(arr));
insertSort(arr);
System.out.println(Arrays.toString(arr)); }
}

1.从数组的第二个元素开始遍历,向数组的头开始找

2.如果遇到比这个元素大的数,就继续向前找

3.如果遇到比这个元素小的数,就把之前比这个元素大的数想前移动一位,然后把这个元素插入到这个比他小的数的前面

排序算法-插入排序(Java)的更多相关文章

  1. 基本排序算法——插入排序java实现

    插入排序过程: 在初始状态下,第一个元素是排序的,在最终状态下,作为一组数据时排序的. 代码如下;eclipse4.3实现 package sort.basic; import java.util.A ...

  2. 数据结构排序算法插入排序Java实现

    public class InsertDemo { public static void main(String args[]) { int[] sort ={4,2,1,3,6,5,9,8,10,7 ...

  3. 常见排序算法(附java代码)

    常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...

  4. 几大排序算法的Java实现

    很多的面试题都问到了排序算法,中间的算法和思想比较重要,这边我选择了5种常用排序算法并用Java进行了实现.自己写一个模板已防以后面试用到.大家可以看过算法之后,自己去实现一下. 1.冒泡排序:大数向 ...

  5. 7种基本排序算法的Java实现

    7种基本排序算法的Java实现 转自我的Github 以下为7种基本排序算法的Java实现,以及复杂度和稳定性的相关信息. 以下为代码片段,完整的代码见Sort.java 插入排序 /** * 直接插 ...

  6. 几种简单的排序算法(JAVA)

    几种排序算法(JAVA) 一.代码 package com.hdwang; import java.util.Arrays; /** * Created by admin on 2017/1/20. ...

  7. 常见排序算法总结 -- java实现

    常见排序算法总结 -- java实现 排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序. 线性时间 ...

  8. 几大排序算法的Java实现(原创)

    几大排序算法的Java实现 更新中... 注: 该类中附有随机生成[min, max)范围不重复整数的方法,如果各位看官对此方法有什么更好的建议,欢迎提出交流. 各个算法的思路都写在该类的注释中了,同 ...

  9. 十大经典排序算法(java实现、配图解,附源码)

    前言: 本文章主要是讲解我个人在学习Java开发环境的排序算法时做的一些准备,以及个人的心得体会,汇集成本篇文章,作为自己对排序算法理解的总结与笔记. 内容主要是关于十大经典排序算法的简介.原理.动静 ...

  10. 经典排序算法 – 插入排序Insertion sort

    经典排序算法 – 插入排序Insertion sort  插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕. 插入排序方法分直接插入排序和折半插入排序两种, ...

随机推荐

  1. Mac PyCharm激活/激活码

    此教程实时更新,请放心使用:如果有新版本出现猪哥都会第一时间尝试激活: pycharm官网下载地址:http://www.jetbrains.com/pycharm/download/ 激活前准备工作 ...

  2. RocketMQ 使用情况梳理

    个人梳理有限:欢迎大家 丰富此文档 2018年 12 月 RocketMQ 版本  不适用于 新版关系请勿参考目前规划原则:          topic 创建基于业务  消费者基于模块 多对多关系 ...

  3. Prometheus 与 Alertmanager 通信

    Prometheus 与 Alertmanager 通信 1.编辑Prometheus配置文件配置连接地址:vim prometheus.yml # Alertmanager configuratio ...

  4. Neo4j图数据库从入门到精通(转)

    add by zhj: 转载时,目录没整理好,还会跳转到原文 其实RDB也可以存储多对多的关系,使用的是中间表,GDB使用的是边,RDB中的实体存储在数据表,而GDB存储在节点.两者使用的底层技术不同 ...

  5. 《 .NET并发编程实战》阅读指南 - 第11章

    先发表生成URL以印在书里面.等书籍正式出版销售后会公开内容.

  6. jdk8 接口的变化

    在jdk8之前,interface之中可以定义变量和方法,变量必须是public.static.final的,方法必须是public.abstract的.由于这些修饰符都是默认的以下写法等价 publ ...

  7. c# asp.net core取当月第一天和最后一天及删除最后一个字符的多种方法

    当月第一天0时0分0秒 DateTime.Now.AddDays( - DateTime.Now.Day).Date 当月最后一天23时59分59秒 DateTime.Now.AddDays( - D ...

  8. NPOI读写

    NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件. 在处理Excel文件上,NPOI 可以同时兼容 xls 和 xlsx.官网提供了一份 Examples, ...

  9. loadrunner 12.0.2 的下载和安装

    链接: https://pan.baidu.com/s/1o2jQjPdUrRm451Pue8bbEg 提取码: gpj6 安装了loadrunner  11 打开文件可自动更新到12 第一部分:安装 ...

  10. python跳出多循环

    参考https://www.php.cn/python-tutorials-88895.html 备注 Python的循环体自己就有else分支! 如果for循环没有执行break,则执行else,f ...