【插入排序解析】

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

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

每一轮确定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. 利用Git+GitHub进行团队协作开发

    自己之前写过两篇关于Git和GItHub使用的文章,分别是 浅谈使用git 进行版本控制博客链接:https://www.cnblogs.com/wj-1314/p/7992543.html 使用Gi ...

  2. Redis 源码解读之 expire 的时机

    Redis 源码解读之 expire 的时机 背景和问题 本文想解决的问题: redis 如何感知并触发 key 过期的? 如何防止大规模的 key 同时过期,导致 redis 主循环阻塞在清理过期 ...

  3. php pdo如何查询记录条数

    转载php中文网:https://www.php.cn/php-ask-457710.html php pdo查询记录条数的方法:1.使用fetchAll函数查询,其语法如"$rows=$q ...

  4. dotnet总结——类型系统

    包括2种大的类型: 引用类型和值类型, 放一张图说明继承层次: 一 值类型: 内置的值类型,如下 用户自定义值类型就是用户定义的枚举或者结构类型. 可空类型(Nullable<T>)属于 ...

  5. NodeJs设置全局缓存路径 和 安装CNPM

    设置全局路径 下建立2个文件夹 如"node_global"及"node_cache" , npm config set prefix "D:\Pro ...

  6. 04#Web 实战:Gitee 贡献图

    前言 这次要做的 Web 前端实战是一个 Gitee 个人主页下的贡献图(在线 Demo),偶尔做一两个,熟悉熟悉 JS 以及 jQ.整体来说这个案例并不难,主要是控制第一个节点以及最后一个节点处于星 ...

  7. 自己动手从零写桌面操作系统GrapeOS系列教程——8.x86介绍

    由于GrapeOS目前只支持x86,所以本讲我们简单的介绍一下x86. 百度百科上是这样介绍的:x86泛指一系列基于Intel 8086且向后兼容的中央处理器指令集架构. 中央处理器就是我们平时说的C ...

  8. C++ cannot bind non-const lvalue reference of type ‘Dog&’ to an rvalue of type ‘Dog’

    void function(Dog & d){ /************** } 调用这个函数,如果传参一个右值对象,临时对象,则会出现这个问题 一个临时对象的引用,这怎么想都不合理 从该函 ...

  9. oracle 设置用户永不过期

    一.查看用户的proifle是哪个,一般是default SELECT username,PROFILE FROM dba_users; 二.查看指定概要文件(如default)的密码有效期 SELE ...

  10. JavaScript查找两个节点的最近的一个共同父节点,可以包括节点自身