【Java】直接插入排序

C语言——排序(插入、交换、选择、归并、基数排序) 前言 《数据结构最后一弹》——排序 看完本篇,你将了解: ①查找问题概述,二者的联系 ②插入排序(直接插入排序、折半插入排序、2–路插入排序、表插入排序、希尔排序) ③交换排序(冒泡排序、快速排序) ④选择排序(简单选择排序、堆排序) ⑤归并排序 ⑥基数排序(多关键字排序介绍) 一、查找问题概述 1.基本概念 (1)“排序”是基于数据逻辑结构T=(D,R)定义的一种重要的运算。 (2)功能是将一个数据元素的任意序列,依据关键字的大小,重新排列成一个有序的序列。 (3)D是数据元素集; R是数据元素之间关系 阅读详情

基本思想:

直接插入排序的基本思想是:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过为止。

算法描述:
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:

①. 从第一个元素开始,该元素可以认为已经被排序
②. 取出下一个元素,在已经排序的元素序列中从后向前扫描
③. 如果该元素(已排序)大于新元素,将该元素移到下一位置
④. 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
⑤. 将新元素插入到该位置后
⑥. 重复步骤②~⑤

举例加实现:

package com.abc;
import java.util.Arrays;

public class SortAlgorithms {

	public static void main(String[] args) {
		int[] array = new int[]{5, 3, 9, 1, 6, 4, 10, 2, 8, 7, 15, 3, 2};
		System.out.println("Before: " + Arrays.toString(array));
        SortAlgorithms.insertionSort(array);
        System.out.println("After:  " + Arrays.toString(array));
	}
	
	  public static void insertionSort(int[] arr){
	        for( int i=0; i<arr.length-1; i++ ) {
	            for( int j=i+1; j>0; j-- ) {
	                if( arr[j-1] <= arr[j] )
	                    break;
	                int temp = arr[j];      //交换操作
	                arr[j] = arr[j-1];
	                arr[j-1] = temp;
	                System.out.println("Sorting:  " + Arrays.toString(arr));
	            }
	        }
	    }

}

输出

Before: [5, 3, 9, 1, 6, 4, 10, 2, 8, 7, 15, 3, 2]
Sorting:  [3, 5, 9, 1, 6, 4, 10, 2, 8, 7, 15, 3, 2]
Sorting:  [3, 5, 1, 9, 6, 4, 10, 2, 8, 7, 15, 3, 2]
Sorting:  [3, 1, 5, 9, 6, 4, 10, 2, 8, 7, 15, 3, 2]
Sorting:  [1, 3, 5, 9, 6, 4, 10, 2, 8, 7, 15, 3, 2]
Sorting:  [1, 3, 5, 6, 9, 4, 10, 2, 8, 7, 15, 3, 2]
Sorting:  [1, 3, 5, 6, 4, 9, 10, 2, 8, 7, 15, 3, 2]
Sorting:  [1, 3, 5, 4, 6, 9, 10, 2, 8, 7, 15, 3, 2]
Sorting:  [1, 3, 4, 5, 6, 9, 10, 2, 8, 7, 15, 3, 2]
Sorting:  [1, 3, 4, 5, 6, 9, 2, 10, 8, 7, 15, 3, 2]
Sorting:  [1, 3, 4, 5, 6, 2, 9, 10, 8, 7, 15, 3, 2]
Sorting:  [1, 3, 4, 5, 2, 6, 9, 10, 8, 7, 15, 3, 2]
Sorting:  [1, 3, 4, 2, 5, 6, 9, 10, 8, 7, 15, 3, 2]
Sorting:  [1, 3, 2, 4, 5, 6, 9, 10, 8, 7, 15, 3, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 9, 10, 8, 7, 15, 3, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 9, 8, 10, 7, 15, 3, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 8, 9, 10, 7, 15, 3, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 8, 9, 7, 10, 15, 3, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 8, 7, 9, 10, 15, 3, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 3, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 3, 15, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 7, 8, 9, 3, 10, 15, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 7, 8, 3, 9, 10, 15, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 7, 3, 8, 9, 10, 15, 2]
Sorting:  [1, 2, 3, 4, 5, 6, 3, 7, 8, 9, 10, 15, 2]
Sorting:  [1, 2, 3, 4, 5, 3, 6, 7, 8, 9, 10, 15, 2]
Sorting:  [1, 2, 3, 4, 3, 5, 6, 7, 8, 9, 10, 15, 2]
Sorting:  [1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 15, 2]
Sorting:  [1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 2, 15]
Sorting:  [1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 2, 10, 15]
Sorting:  [1, 2, 3, 3, 4, 5, 6, 7, 8, 2, 9, 10, 15]
Sorting:  [1, 2, 3, 3, 4, 5, 6, 7, 2, 8, 9, 10, 15]
Sorting:  [1, 2, 3, 3, 4, 5, 6, 2, 7, 8, 9, 10, 15]
Sorting:  [1, 2, 3, 3, 4, 5, 2, 6, 7, 8, 9, 10, 15]
Sorting:  [1, 2, 3, 3, 4, 2, 5, 6, 7, 8, 9, 10, 15]
Sorting:  [1, 2, 3, 3, 2, 4, 5, 6, 7, 8, 9, 10, 15]
Sorting:  [1, 2, 3, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15]
Sorting:  [1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 15]
After:  [1, 2, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 15]

java实现直接插入排序 java实现直接插入排序 一、排序思想 我们假定排序是有小到大排列。直接插入排序的基本思想是:在一个已排好的记录子集的基础上,每一步将下一个待排序的记录有序的插入到已排好的记录子集当中,直接将所有待排记录全部插入位置 例如: 已知待排序的一组记录的初始排列为:{49,38,65,49,76,13,27,52} 假设在排序过程中,前三个记录按关键字递增的次序重新排列,构成了一个含有三个记录的有序序列: {38,49,65} 现在要将第四个记录49插入到上述序列,得到的有序序列: {38,**49,**49,4 阅读详情

相关推荐

开源ISP实战(1)——基于Zynq7020的Vivado工程移植与调试

本文详细介绍了将开源ISP项目移植到正点原子Zynq7020开发板的实战过程。重点阐述了在Vivado中进行工程创建、IP核导入、Block Design框架搭建、时钟配置与管脚约束修改等关键步骤,并提供了系统联调与常见问题的排查思路,为FPGA图像处理开发者提供了完整的移植与调试指南。

weixin_29191081的博客 200

插入排序:直接插入、交换插入、折半插入

插入排序:把一个数插入到一个有序的序列中,并要求插入后此数据序列仍然有序。这种排序思想就是插入排序。 那么对于一个原始无序的序列,哪里找有序的部分呢?这个很简单,可以把序列分为两个部分,第一个元素是第一部分,其余元素是第二部分。第一个部分只有一个元素,当然是有序的!对于如何把其余元素插入到第一部分中去,按插入策略,可分为如下几种插入方法:

CCPP Blog 5万+

什么是PMOS?什么是NMOS?两者有什么区别?

这个电压差被称为阈值电压(Vth),通常为0.7V至2V(低压NMOS)或4V至10V(功率NMOS)。当Vgs(栅极-源极电压)大于Vth时,沟道中的电子被吸引到栅极下方,形成导电通路,使电流可以从漏极流向源极。NMOS与PMOS的结构类似,都由三大部分组成:栅极(Gate)、源极(Source)和漏极(Drain)。由于NMOS在开启时,电子是主要的载流子,电子的迁移率比空穴高,因此NMOS通常具有更低的导通电阻(Rds(on)),这使其成为高速开关电路中的首选。它的沟道由电子(负载子)传导。

硅农深芯的博客 6433

(1.3.3)插入排序:直接插入、交换插入、折半插入

插入排序:把一个数插入到一个有序的序列中,并要求插入后此数据序列仍然有序。这种排序思想就是插入排序。     那么对于一个原始无序的序列,哪里找有序的部分呢?这个很简单,可以把序列分为两个部分,第一个元素是第一部分,其余元素是第二部分。第一个部分只有一个元素,当然是有序的!对于如何把其余元素插入到第一部分中去,按插入策略,可分为如下几种插入方法: 直接插入:每次a[i]先和前面

JAVA成长之路 4万+

【大模型】大模型知识蒸馏 综述解读(Knowledge Distillation of Large Language Models)

知识蒸馏的(论文)方法总结。归纳了通过数据(如指令、对话、多模态)和训练方法(SFT、RL、数据增强),将复杂技能(如对齐、工具使用、多模态)蒸馏到开源模型的核心框架,附典型模型示例(如Alpaca、LLaVA)。

songxia928_928的博客 4335

量子阱技术解析:从基础原理到前沿应用

本文深入解析量子阱技术,从微观“能量游泳池”的基础原理出发,阐释了其通过限制电子实现能级量子化,从而精确调控发光波长的核心机制。文章详细探讨了量子阱在半导体激光器和LED中的革命性应用,如实现低阈值电流与高亮度显示,并展望了其在能带工程及量子级联激光器等前沿领域的发展与挑战。

weixin_29267307的博客 282

交换技术整理

交换

weixin_65518685的博客 2万+

智能座舱SoC平台横评:SA8155P、SA8255P、SA8295P、MT8678、MT8628 谁是下代车机首选?

高通SA8295P以PC级架构、强悍AI算力,代表安卓阵营迈向“本地大模型+空间计算”阶段;联发科MT8678则凭借低功耗 + 高带宽,成为副驾多媒体/副屏智能化的性价比之王。在座舱设计中,SoC平台决定了你能给用户什么样的交互方式,选型时切忌只看跑分,而要回归“体验-热设计-平台生态”的三角平衡。

weixin_43199439的博客 3358

浅谈排序算法实现(冒泡、交换、插入、快速)

排序是指将元素集合按照规定的顺序排列,通常有2中方法,升序和降序排序。排序的目的就是是数据能够以更有意义的形式表现出来。虽然排序最显著的应用时排列数据以显示它,但它往往可以用来解决其他的问题,特别是作为成熟算法的一部分。   总的来说,排序的算法有2大类:比较排序和线性时间排序。比较排序依赖于比较和交换来讲元素移动到正确的位置上。令人惊讶的是,并不是所有的排序算法都依赖于比较。对于那些依赖于比较

轻飘飞扬 6806

Hermes 教程 05:多 Agent 编排

本文介绍了Hermes v0.13.0中的四种多Agent协作模式:1)delegate_task快速子任务模式,适合2-3个独立并行任务;2)spawn子Agent模式,实现零成本并行多步流水线;3)tmux交互子Agent模式,支持长期自主任务;4)全新Kanban看板系统,提供持久化AI团队协作框架。各模式在隔离级别、时长、工具访问和适用场景上存在差异,其中spawn模式通过独立上下文窗口实现零上下文成本。文章详细说明了每种模式的使用方法、限制条件和典型应用场景,并提供了具体代码示例和可视化流程图。K

程序猿_三产 534

Unity 实战项目 ☀️| 只用一个脚本做一个 刮刮乐 案例,一不小心刮出来一个女朋友!【学习娱乐一下】

只用一个脚本做一个刮刮乐,一不小心刮出来一个女朋友!【学习娱乐一下!】

努力前行,总会成为自己心中的那道光 23万+

直接插入排序_Java干货分享:直接插入排序

上期分享:Java干货分享:选择排序上一期知了姐给大家分享了在编程里经典算法之一的冒泡排序,有小伙伴问还有其他的排序方法吗?当然有呀,今天小编就给大家分享另一个排序算法——直接插入排序。直接插入排序和它的字面意思一样,将数字插入到有序序列中排序。咱们还是借用上期小朋友按身高排序的例子来理解:一排小朋友身高不同,我们需要将小朋友们按照从矮到高的规则排成一排,这时候我们选择当前这一排中第一个小朋友,将...

weixin_39723102的博客 249

OpenClaw 与十几款国产 “龙虾” 智能体深度对比

详解介绍OpenClaw和各种类似国产“龙虾”智能体工具深度对比

program哲学 2341

Java排序01——直接插入排序

Java排序01:直接插入排序直接插入排序基本思想举例Java代码 直接插入排序基本思想 把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表中的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。 举例 Java代码 public class D_InsertSor...

weixin_43999618的博客 175

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

java数据结构之直接插入排序

        直接插入排序(Straight Insertion Sort)是一种最简单的排序方法,其基本操作是将一条记录插入到已排好的有序表中,从而得到一个新的、记录数量增 1 的有序表。 在日常生活中,经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。例如:一组从小到大排好顺序的数据列 {1,2,3,4,5,6,7,9,10},通常称之为有序列,我们用序号 1,2,3,… 表示...

java__liyong的博客 826

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java 中常见的排序——插入排序(直接插入排序,希尔排序)

java 中常见的排序——插入排序(直接插入排序,希尔排序) 插入排序的基本思想概述 直接插入排序:一个无序的序列或者一个数组,将第一个元素当做一个有序的数列,然后将后面无序数列的第一个元素与有序数列中的元素从后往前依次比较,找到合适的位置插入进去。这就好像打扑克牌,左手拿的牌总是一个有序的组合,右手抓牌,从后往前依次比较,插入合适的位置当中。 希尔排序: 将一个数组分为多个子序列,然后对每个序...

qq_31322085的博客 304

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java直接插入排序实现

个人理解:   没有运行,个人认为内层循环边界到了负数不太对,而且下一步的数组整体移动位置也有点问题,从运行结果来看是正确有条件需要自己运行一下 转载请注明出处:http://www.cnblogs.com/skywang12345/p/3596881.html 直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表...

a662852186的博客 418

直接插入排序(JAVA)

直接插入排序(JAVA)

qq_62911298的博客 404

Java实现直接插入排序

Java实现直接插入排序 在日常生活中,经常碰到这样一类排序问题:把新的数据插入到已经排好的数据列中。例如:一组从小到大排好顺序的数据列{1,2,3,4,5,6,7,9,10},通常称之为有序列,我们用序号1,2,3,…表示数据的位置,欲把一个新的数据8插入到上述序列中。 完成这个工作的步骤: ①确定数据“8”在原有序列中应该占有的位置序号。数据“8”所处的位置应满足小于或等于该位置右边所有

Coder_py的博客 355

java直接插入排序_Java常见排序算法之直接插入排序

从今天开始,我们将要进行基本的排序算法的讲解。Are you ready?Let‘s go~~~1、排序算法的基本概念的讲解时间复杂度:需要排序的的关键字的比较次数和相应的移动的次数。空间复杂度:分析需要多少辅助的内存。稳定性:如果记录两个关键字的A和B它们的值相等,经过排序后它们相对的位置没有发生交换,那么我们称这个排序算法是稳定的。否则我们称这个排序算法是不稳定的。排序算法的常见分类:1、内部...

weixin_32046225的博客 192

JAVA算法(直接插入排序)

世面上的算法书大都是C写的,为了学习JAVA和算法自己写了个JAVA的直接插入排序。由于水平有限,存在很多不足之处,希望大家能够多加指正,谢谢。    /**这是一个利用直接插入排序法写的一个小程序;直接插入排序是一个将待排序列中的元素p[i]与一个有序序列中的元素q[j--]比较(从后向前),当p[i] >= q[j] (递增排序)或 p[i] <= q[j] (递减排序

sotily001的专栏 1558

java直接插入_Java干货分享:直接插入排序

上一期知了姐给大家分享了在编程里经典算法之一的冒泡排序,有小伙伴问还有其他的排序方法吗?当然有呀,今天小编就给大家分享另一个排序算法——直接插入排序。直接插入排序和它的字面意思一样,将数字插入到有序序列中排序。咱们还是借用上期小朋友按身高排序的例子来理解:一排小朋友身高不同,我们需要将小朋友们按照从矮到高的规则排成一排,这时候我们选择当前这一排中第一个小朋友,将他作为新顺序的第一个。接下来将无序序...

weixin_39989159的博客 100

直接插入排序java_Java常见排序算法详解——直接插入排序

原标题:Java常见排序算法详解——直接插入排序直接插入排序Straight Insertion Sort概念:将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录递增1的有序表。插入排序是进行值移动,而是不值交换。所以在量较小的情况下插入排序性能要优于冒泡和简单选择排序。原理:设有一组关键字{K1, K2,…, Kn};排序开始就认为 K1 是一个有序序列;让 K2 插入上述表长为 1 ...

weixin_31147827的博客 193

插入排序之直接插入排序Java实现

插入排序之排序Java实现 package com.mike.sort; import java.util.Arrays; public class InsertSort { /* * 直接插入排序 */ public static void insertSort(DataWrap[] data){ for (int i = 1; i < data.length; i++

Devin 868
上一篇: 【Java】输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数。
下一篇: 【Java】输入两个正整数m和n,求其最大公约数和最小公倍数。
feiyuu_liu
博客等级 码龄9年 8粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值