算法基础之插入排序
1、插入排序基本思想
插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。(类似与打牌时自己按顺序整理牌面时
2、代码实现
public class Test {public static void main(String[] args) {int [] arr = {3,5,2,9,8,7,4,1,6};System.out.println("插入排序后的数组:"+Arrays.toString(insertNum(arr)));}public static int[] insertNum(int[] arr) {//判断数组是否合法if (arr == null || arr.length <= 0) {return null;}//默认数组的第一个元素已经是排序好的数组,所以i从数组的第二位开始取;for (int i = 1; i < arr.length; i++) {//取未排序数组的头元素int temp = arr[i];//j用于保存排序好的数组的尾元素int j;//从尾元素开始在排序好的数组中向前遍历for(j=i-1;j>=0;j--) {//从小到大排序的话,判断temp是否小于已排序好的元素的值,如果小于说明还要向前遍历;if(temp < arr[j]) {arr[j+1]=arr[j];}else {//发现temp大于已排序好的arr[j]的,说明要插在此元素的后一位,break跳出for循环;break;}}//将排序的元素插在arr[j]的后一位arr[j+1]arr[j+1]=temp;}return arr;}}
结果如图:
相关文章:
算法基础之插入排序
1、插入排序基本思想 插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序)&a…...
InfoQ 分享
...
Jupyter Notebook 遇上 NebulaGraph,可视化探索图数据库
在之前的《手把手教你用 NebulaGraph AI 全家桶跑图算法》中,除了介绍了 ngai 这个小工具之外,还提到了一件事有了 Jupyter Notebook 插件: https://github.com/wey-gu/ipython-ngql,可以更便捷地操作 NebulaGraph。 本文就手把手教你咋在 J…...
人类与机器的分类不同
分类能力也是智能的重要标识之一。通过分类,我们可以将事物或概念进行归类和组织,从而更好地理解和处理信息。分类在人类认知和智能发展中起到了重要的作用,它有助于我们对世界进行认知、记忆、推理和决策。在机器智能领域,分类同…...
WEB安全-SQL注入,CSRF跨站伪造,OXX跨站脚本
SQL 注入攻击 SQL 注入是一种网络攻击手段,攻击者通过在 Web 应用程序的输入字段中插入恶意 SQL 代码,试图访问、篡改或删除数据库中的数据。这种攻击通常发生在应用程序未对用户输入进行充分验证或过滤的情况下。 举个例子,例如,…...
【HDFS】客户端读某个块时,如何对块的各个副本进行网络距离排序?
本文包含如下内容: ① 通过图解+源码分析/A1/B1/node1和 /A1/B2/node2 这两个节点的网络距离怎么算出来的 ② 客户端读文件时,副本的优先级。(怎么排序的,排序规则都有哪些?) ③ 我们集群发现的一个问题。 客户端读时,通过调用getBlockLocations RPC 获取文件的各个块。…...
【数字化处理】仿生假体控制中肌电信号的数字化处理研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
谷歌推出Flax:JAX的神经网络库
在优化理论中,损失或成本函数测量拟合或预测值与实际值之间的距离。对于大多数机器学习模型,提高性能意味着最小化损失函数。 但对于深度神经网络,执行梯度下降以最小化每个参数的损失函数可能会消耗大量资源。传统方法包括手动推导和编码&a…...
PDF换行的难度,谁能解决?
换行的时候确认不了长度: import java.awt.*;public class Test {public static void main(String[] args) {String str1 "淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘";String str2 "AAAAAAAAAAAAAAAAAAAAAAAAA…...
山东布谷科技直播程序源码使用Redis进行服务器横向扩展
当今,直播程序源码平台作为新媒体时代主流,受到了世界各地人民的喜爱,这也使得直播程序源码平台用户数量的庞大,也难免会出现大量用户同时访问服务器,使服务器过载的情况,当服务器承受不住的时候࿰…...
symfony3.4中根据角色不同跳转不同页面
在Symfony 3.4中,可以使用安全组件来实现控制不同角色跳转到不同页面的功能。 首先,确保你已经安装了Symfony的安全组件,并配置了安全相关的配置文件。这些文件通常是 security.yml 和 security.yml。 在配置文件中,你可以定义不…...
Dockerfile部署golang,docker-compose
使用go镜像打包,运行在容器内 redis和mysql用外部的 项目目录结构 w1go项目: Dockerfile # 这种方式是docker项目加上 本地的mysql和redis环境 # go打包的容器 FROM golang:alpine AS builder# 为我们镜像设置一些必要的环境变量 ENV GO111MODULEon …...
什么是Linux,如何在Windows操作系统下搭建Linux环境,远程连接Linux系统
文章目录 什么是LinuxLinux的诞生及发展为什么要学习LinuxLinux内核Linux发行版什么是虚拟机如何在VMware虚拟机中搭建Linux系统环境远程连接 Linux 系统Linux 帮助网站 什么是Linux Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户…...
Ubuntu下RabbitMQ安装与简单使用
一:RabbitMQ基本安装 1.更新依赖包(提前更新依赖包避免出现报错) sudo apt-get update 2.由于rabbitMq使用erlang语言开发,在安装rabbitMq之前需要安装erlang sudo apt-get install erlang 3.查看erlang是否安装成功 sudo erl 安装成功会出现下面的提示…...
力扣62.不同路径(动态规划)
/*** 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。* 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。* 问总共有多少条不同的路径? *…...
TypeScript 泛型的概念和基本使用
什么是TypeScript 泛型? 在定义函数,接口,类的时候不能预先确定使用的数据类型,而是在调用使用这些函数,接口,类的时候才能确定的数据类型; 1,单个泛型的参数 例如通过使用any这种…...
redis的事务和watch机制
这里写目录标题 第一章、redis事务和watch机制1.1)redis事务,事务的三大命令语法:开启事务 multi语法:执行事务 exec语法:取消事务 discard 1.2)redis事务的错误和回滚的情况1.3)watch机制语法&…...
objectMapper.getTypeFactory().constructParametricType 方法的作用和使用
在使用 Jackson 库进行 JSON 数据的序列化和反序列化时,经常会使用到 ObjectMapper 类。其中,objectMapper.getTypeFactory().constructParametricType 方法用于构造泛型类型。 具体作用和使用如下: 作用: 构造泛型类型&#x…...
【websocket - Tornado】简易聊天应用
1、背景 项目测试的过程中需要自己搭建一个webscoket站点,确保此类服务接入后台系统后访问不受影响。python的服务框架常用的有Flask、Django、Tornado,每个框架的侧重点不同,导致使用的场景就会有所差异。 Flask轻量级,采用常规的同步编程方式,需要安装其他模块辅助,主…...
TCP 三次握手,四次挥手
1、三次握手 第一次握手 SYN 等于1,SeqX 第二次握手 SYN等于1 ACK等于1,SeqY,AckX1 第三次SYN等于0 ACK等于1,SeqX1,AckY1 ackRow都是对应请求seqraw,三次握手后,Seq就是服务器前一个包中的ac…...
告别手动翻日志!用Log Parser 2.2 + Login工具,5分钟自动化分析Windows安全事件
从日志泥潭到智能洞察:Log Parser与Login工具的高效协同实战 Windows安全事件日志就像一座未经开采的金矿,每天产生海量的4624、4625等登录事件记录。传统的手动翻查不仅效率低下,还容易遗漏关键安全线索。本文将带你突破手工操作的瓶颈&…...
Azure 资源管理器编程:resourcemanager 模块的 100+ 服务集成
Azure 资源管理器编程:resourcemanager 模块的 100 服务集成 【免费下载链接】azure-sdk-for-go This repository is for active development of the Azure SDK for Go. For consumers of the SDK we recommend visiting our public developer docs at: 项目地址:…...
ThingsBoard共享属性实战:从MQTT订阅到规则链触发的完整数据流解析
ThingsBoard共享属性实战:从MQTT订阅到规则链触发的完整数据流解析 在物联网平台开发中,数据流的清晰理解和精确控制是构建可靠系统的关键。ThingsBoard作为一款开源的物联网平台,其共享属性机制和规则链引擎为开发者提供了强大的数据流转能力…...
机械工程论文降AI工具免费推荐:2026年机械工程毕业论文降AI知网维普亲测4.8元达标完整指南
机械工程论文降AI工具免费推荐:2026年机械工程毕业论文降AI知网维普亲测4.8元达标完整指南 帮室友处理过机械工程论文降AI,前前后后试了四款工具,最后固定在嘎嘎降AI(www.aigcleaner.com)。 4.8元,达标率…...
贪吃蛇游戏设计-7.完整系统
7.完整系统 完整系统Snake代码太多,另有源码。 一个基于 HarmonyOS ArkTS 开发的经典贪吃蛇游戏,适合作为 ArkTS 开发的学习项目。 功能特性 🎮 经典贪吃蛇玩法 📊 实时分数显示 🏆 最高分记录 📝 玩家姓名输入与成绩保存 📋 排行榜展示 🗑️ 排行榜滑动删除功…...
技术分享 | 彻底解决图片“躺平”问题:Java 后端强制校准图片方向
在日常开发中,你是否遇到过这样的情况:前端上传了一张手机拍摄的照片,预览时明明是正的,存入服务器后却莫名其妙地“躺平”了,或者逆时针旋转了 90 度?以下方案用于强制旋转图片这通常是因为 JPEG 图片的 E…...
避坑指南:在Codesys V3.5中用ST处理XML,我踩过的那些‘坑’
Codesys实战:ST语言处理XML文件的7个关键陷阱与解决方案 在工业自动化领域,XML作为数据交换的标准格式,其重要性不言而喻。然而,当我们在Codesys V3.5环境下使用ST语言处理XML文件时,往往会遇到一系列令人头疼的问题。…...
深入解析Solana SPL Token:原理、生态与未来布局
深入解析Solana SPL Token:原理、生态与未来布局 引言 在追求高性能区块链的浪潮中,Solana以其惊人的交易速度和低廉的费用脱颖而出。而这一切,离不开其核心资产标准——SPL Token的支撑。无论是引爆市场的STEPN,还是承载万亿美…...
深入Linux内存管理:从虚拟内存到OOM Killer的完整解析
1. 从物理到虚拟:内存管理的演进与核心挑战干了这么多年系统开发和性能调优,内存问题始终是那个最让人头疼,但又不得不面对的“老朋友”。无论是半夜被报警叫醒处理线上服务的OOM(Out of Memory)崩溃,还是为…...
ADF4350频点锁定与电源滤波实战:为什么你的VCO输出有噪声?加个钽电容试试!
ADF4350频点锁定与电源滤波实战:为什么你的VCO输出有噪声?加个钽电容试试! 在射频电路设计中,ADF4350作为一款集成VCO的宽带频率合成器,因其出色的性能和灵活性广受工程师青睐。然而,许多开发者在实际应用中…...
