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. 应用层协议:HTTPS

    1. HTTPS定义 Hyper Text Transfer Protocol over Secure Socket Layer,安全的超文本传输协议,网景公式设计了SSL(Secure Socket ...

  2. cloudstack4.11 centos7 安装文档

    centos 7.x  cloudstack 4.11 提示:生产环境 建议用ceph 块存储为主存储, 这里测试使用的是nfs主存储     组件 172.16.19.116  cloudstack ...

  3. HTTP之网关的分类

    网关的分类 ========================摘自<HTTP权威指南>============================= 1.  HTTP/*:服务器端Web网关 请 ...

  4. python之函数filter、reduce

    ---恢复内容开始--- 一.filter函数 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 该接收两个参数,第一个为函数,第二个为序列,对序列中每个元 ...

  5. Android系统HAL开发实例

    1.前言 Android系统使用HAL这种设计模式,使得上层服务与底层硬件之间的耦合度降低,在文件: AOSP/hardware/libhardware/include/hardware/hardwa ...

  6. Isilon Gen6的换盘步骤

    When a drive is faulted and ready for replacement, OneFS will illuminate the Front Panel Fault LED a ...

  7. StuQ技能图谱

  8. 2019-11-29-WPF-高性能笔

    原文:2019-11-29-WPF-高性能笔 title author date CreateTime categories WPF 高性能笔 lindexi 2019-11-29 10:20:51 ...

  9. 01 .NET CORE 2.2 使用OCELOT -- 简单使用

    目前参考两篇文章,已实现基本的ocelot的网关功能. https://www.cnblogs.com/xlxr45/p/11320988.html https://www.jianshu.com/p ...

  10. 1-Consul系列文章

    使用Consul做服务发现的若干姿势 Consul的反熵 [Consul]Consul架构-简介