【插入排序解析】

起始:
假设第一个元素为已经排好序

那么我们就要从数组的第二个元素开始

每一轮确定1一个元素的正确位置

所以外层循环的控制变量为 [1,arr.length)的左闭右开区间

外层循环控制比较轮次的同时,也是每轮需要比较的数组元素的下标

因为插入排序的原理为 将待排序的数组元素插入到有序的假设数组内

这个假设的有序数组是变化的,每轮比较完都会增加,

所以用内循环变量控制元素与这个动态变化的有序数组的比较次序

public class InsertSort1 {
public static void main(String[] args) {
int[] arr = new int[]{15,13,20,4,9,3};
for (int i=1;i<arr.length;i++){
for (int j=0;j<i;j++){
if (arr[i]<arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}

【java数据结构与算法】插入排序的更多相关文章

  1. java数据结构和算法------插入排序

    package iYou.neugle.sort; public class Insert_sort { public static void InsertSort(double[] array) { ...

  2. Java数据结构和算法(三)--三大排序--冒泡、选择、插入排序

    三大排序在我们刚开始学习编程的时候就接触过,也是刚开始工作笔试会遇到的,后续也会学习希尔.快速排序,这里顺便复习一下 冒泡排序: 步骤: 1.从首位开始,比较首位和右边的索引 2.如果当前位置比右边的 ...

  3. Java数据结构和算法(九)——高级排序

    春晚好看吗?不存在的!!! 在Java数据结构和算法(三)——冒泡.选择.插入排序算法中我们介绍了三种简单的排序算法,它们的时间复杂度大O表示法都是O(N2),如果数据量少,我们还能忍受,但是数据量大 ...

  4. Java数据结构和算法 - 高级排序

    希尔排序 Q: 什么是希尔排序? A: 希尔排序因计算机科学家Donald L.Shell而得名,他在1959年发现了希尔排序算法. A: 希尔排序基于插入排序,但是增加了一个新的特性,大大地提高了插 ...

  5. Java数据结构和算法 - 递归

    三角数字 Q: 什么是三角数字? A: 据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,……中有一种奇特的联系.这个数列中的第N项是由第N-1项加N得到的 ...

  6. Java数据结构和算法 - 简单排序

    Q: 冒泡排序? A: 1) 比较相邻的元素.如果第一个比第二个大,就交换它们两个; 2) 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数; 3) 针 ...

  7. Java数据结构与算法 - 外部存储

    Q: 什么是外部存储? A: 外部存储特指某类磁盘系统,例如在大多数台式电脑或服务器中的硬盘. Q: 如何访问外部存储? A: 我们所学的数据结构都是假设数据存储在内存中,但是,在很多情况下要处理的数 ...

  8. Java数据结构和算法(五)——队列

    队列.queue,就是现实生活中的排队. 1.简单队列: public class Queqe { private int array[]; private int front; private in ...

  9. Java数据结构和算法(四)赫夫曼树

    Java数据结构和算法(四)赫夫曼树 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 赫夫曼树又称为最优二叉树,赫夫曼树的一个 ...

  10. Java数据结构和算法(五)--希尔排序和快速排序

    在前面复习了三个简单排序Java数据结构和算法(三)--三大排序--冒泡.选择.插入排序,属于算法的基础,但是效率是偏低的,所以现在 学习高级排序 插入排序存在的问题: 插入排序在逻辑把数据分为两部分 ...

随机推荐

  1. Cesium用wsad进行场景漫游(九)

    2023-01-14 先看效果,wsadqe控制方向升降,鼠标拖动屏幕也可以控制方向 整理下思路: 1. 使用movement变量控制是否进行漫游 2.1 进行漫游则先将enableRotate等全部 ...

  2. 【C#异步】异步多线程的本质,上下文流转和同步

    引言 net同僚对于async和await的话题真的是经久不衰,这段时间又看到了关于这方面的讨论,最终也没有得出什么结论,其实要弄懂这个东西,并没有那么复杂,简单的从本质上来讲,就是一句话,async ...

  3. 微信小程序与微信公众号之间支付问题解决方案

    前言 大家好,我是一名对编程有兴趣的小伙子,IT届称我为xiager,工作中叫我jake 就好了,如果此文对你有帮助希望多多关注哦. 准备 微信公众平台 微信支付平台 微信开放平台 一. 小程序    ...

  4. Docker安装和基础命令

    每个优秀的人,背后都有一段沉默的时光 前言 学习Docker基础知识 安装 docker常见的有3种安装方式,yum.rpm包.脚本. 我们采用相对简单但对各种环境比较友好的方式:(关防火墙和seli ...

  5. video.js没有显示已播放时间、总时间?

    我们在JS中设置了显示两个时间,但是没有显示. 经过查找,有的博文说或许是JS版本太高?我们没有换JS.另一篇博文给了我们启发,修改下样式就好了,我们一看,真的是样式问题 都改成block后就看到时间 ...

  6. 洛谷 P6021 洪水

    题意 给定一棵有 \(n\) 个结点的树,点有点权:一共有 \(m\) 次操作,每次操作包括以下两种: 在一个点的子树中删去一些结点,使得该子树中所有叶结点与该子树的根结点不连通,并且使删去的点的点权 ...

  7. C# DevExpress中GridControl控件的基本属性设置和使用方法

    1.GridControl隐藏GroupPanel(主面板) 隐藏:鼠标单击Run Designer-OptionsView-ShowGroupPanel=False; 修改:鼠标单击Run Desi ...

  8. java double/float转BigDecimal,精度问题

    double/float 转BigDecimal,会有精度问题.所以需要转String类型,然后再转BigDecimal

  9. Lucky Chains(最大公约数的应用)

    题目:Lucky Chains 题意: 给定两个正整数a, b,若(a, b) = (a + 1, b + 1) = (a + 2, b + 2) = ... = (a + k, b + k) = 1 ...

  10. Linux用rsync命令秒删十万文件

    迁移网站和rm删除大量文件卡住怎么办? 昨天在服务器网站搬家的时候遇到一个小问题,在linux端现在用宝塔面板管理非常方便,于是搬家也偷懒用一键迁移的功能,可以把数据库网站配置等一次性迁移到新服务器, ...