算法__数组排序_冒泡排序直接选择排序快速排序
文章目录
- 冒泡排序
- 算法说明
- 代码实现
- 直接选择排序
- 算法说明
- 代码实现
- 快速排序
- 算法说明
- 代码实现
本篇主要讲解数组排序相关的三种算法,冒泡排序,直接排序和快速排序。
冒泡排序
算法说明
在数组中依次比较相邻的两个元素,当满足左侧大于右侧时(升序排序),则两个位置的元素互换。如此重复,最终即可完成数组的排序。
代码实现
public static void bubbleSort(int[] array){
// 循环轮数比数组大小小1轮for(int i = 1; i < array.length; i++){// 循环1轮后,最大的元素,已经排到数组后面,不用再参与比较for(int j = 0; j < array.length - i; j++){if(array[j] > array[j+1]){int temp = array[j];array[j] = array[j+1];array[j+1] = temp;}}}
}
直接选择排序
算法说明
依次找出数组中最小值的索引,并和数组左侧的元素进行位置交换。
这样从整体上就是数组的左侧部分是按照由小到大依次排列的有序数组。
代码实现
public static void selectSort(int[] array){for(int i = 0; i < array.length - 1; i++){// 记录比较的元素和索引int min = array[i];int minIndex = i;for(int j = i + 1; j < array.length; j++){if(array[j] < min){// 记录最小值的索引和值minIndex = j;min = array[j];}}// 将最小值与前面的元素交换int temp = array[minIndex];array[minIndex] = array[i];array[i] = temp;}
}
快速排序
算法说明
选择一个基准比较值,然后依据这个基准值,将数组分隔为两个部分,左侧的部分为所有小于基准的值,右侧部分为所有大于基准的值。
代码实现
/*** 快速排序法,排序数组* @author Ethan* @description* @param array*/public static void quickSort(int[] array){subSort(array,0,array.length - 1);}/*** 快速排序法的核心算法* @author Ethan* @description* @param array 被排序的数组* @param start 起始索引* @param end 结束索引*/public static void subSort(int[] array, int start, int end){if(start < end){
// 选取数组最左边的元素作为判断基础int base = array[start];int left = start;int right = end + 1;while(true){
// 从左向右遍历遇到大于基数的索引停止,left指向大于基数的索引while(left < end && array[++left] <= base);
// 从右向左遍历找到小于基数的索引停止,right指向小于基数的索引while(right > start && array[--right] >= base);
// 当大于基数的索引在小于基数的索引前时,进行交换,让小于基数的值都在左边,大于基数的值都在右边if(left < right) {swap(array,left,right);}else{break;}}
// 将基数和小于基数的最右边的元素位置对换swap(array,start,right);
// 递归排序分割后的数组subSort(array,start,right-1);subSort(array,right + 1,end);}}/*** 交换数组中两个索引处的数值* @author Ethan* @description* @param array* @param left* @param right*/public static void swap(int[] array, int left, int right){int temp = array[left];array[left] = array[right];array[right] = temp;}相关文章:
算法__数组排序_冒泡排序直接选择排序快速排序
文章目录 冒泡排序算法说明代码实现 直接选择排序算法说明代码实现 快速排序算法说明代码实现 本篇主要讲解数组排序相关的三种算法,冒泡排序,直接排序和快速排序。 冒泡排序 算法说明 在数组中依次比较相邻的两个元素,当满足左侧大于右侧时…...
ByteBuffer的原理和使用详解
ByteBuffer是字节缓冲区,主要用户读取和缓存字节数据,多用于网络编程,原生的类,存在不好用,Netty采用自己的ByteBuff,对其进行了改进 1.ByteBuffer的2种创建方式 1.ByteBuffer buf ByteBuffer.allocate(i…...
【MySql】10- 实践篇(八)
文章目录 1. 用动态的观点看加锁1.1 不等号条件里的等值查询1.2 等值查询的过程1.3 怎么看死锁?1.4 怎么看锁等待?1.5 update 的例子 2. 误删数据后怎么办?2.1 删除行2.2 误删库/表2.3 延迟复制备库2.4 预防误删库 / 表的方法2.4.1 账号分离2.4.2 制定操…...
【三方登录-Apple】iOS 苹果授权登录(sign in with Apple)之开发者配置一
记录一下sign in with Apple的开发者配置 前言 关于使用 Apple 登录 使用“通过 Apple 登录”可让用户设置帐户并使用其Apple ID登录您的应用程序和关联网站。首先使用“使用 Apple 登录”功能启用应用程序的App ID 。 如果您是首次启用应用程序 ID 或为新应用程序启用应用程序…...
可视化 | 数据可视化降维算法梳理
文章目录 📚数据描述🐇iris🐇MNIST 📚PCA🐇算法流程🐇图像描述 📚Kernel-PCA🐇算法流程🐇图像描述 📚MDS🐇算法流程🐇图像描述 &#…...
分布式:一文吃透分布式事务和seata事务
目录 一、事务基础概念二、分布式事务概念什么是分布式事务分布式事务场景CAP定理CAP理论理解CAPCAP的应用 BASE定理强一致性和最终一致性BASE理论 分布式事务分类刚性事务柔性事务 三、分布式事务解决方案方案汇总XA规范方案1:2PC第一阶段:准备阶段第二…...
Java架构师前沿技术
目录 1 导学2 信息物理系统2.1CPS的体系架构2.2 CPS的技术体系3 人工智能4 机器人5 边缘计算6 数字李生体7 云计算7.1 云计算的部署模式8 大数据想学习架构师构建流程请跳转:Java架构师系统架构设计 1 导学 2 信息物理系统 信息物理系统(CPS)是控制系统、嵌入式系统的扩展与…...
OpenCV ycrcb颜色空间
Opencv中有一个Ycrcb的选项,这个选项其实是Yuv444packet. 下面代码从文件中获取到一个yuv444planar的文件,通过手动转换,将其转为YcrCb,然后进行颜色空间csc. 所以可以确定这是一个packet的存储格式 def yuv444p_2_bgr8_opencv(…...
SPSS两独立样本t检验
前言: 本专栏参考教材为《SPSS22.0从入门到精通》,由于软件版本原因,部分内容有所改变,为适应软件版本的变化,特此创作此专栏便于大家学习。本专栏使用软件为:SPSS25.0 本专栏所有的数据文件请点击此链接下…...
视频格式高效转换:MP4视频批量转MKV格式的方法
随着数字媒体技术的不断发展,视频格式转换已经成为了我们日常工作中不可或缺的一部分。不同的视频格式适用于不同的场景和设备,因此将视频从一种格式转换为另一种格式往往是我们必须完成的任务。在本文中,我们将重点介绍如何运用云炫AI智剪高…...
0028Java程序设计-智能农场监控报警系统设计与实现
文章目录 摘要目 录系统设计开发环境 摘要 我国是一个以农业为主的国家,在当今社会信息化迅速发展的背景下,将信息技术与农业相融合是必然的趋势。现代信息技术在农业生产中的运用,主要体现在两个领域:一是传感器技术;…...
数据结构和算法——用C语言实现所有图状结构及相关算法
文章目录 前言图的基本概念图的存储方式邻接矩阵邻接表十字链表临界多重表 图的遍历最小生成树普里姆算法(Prim)克鲁斯卡尔算法(Kruskal) 最短路径BFS求最短路径迪杰斯特拉算法(Dijkstra)弗洛伊德算法&…...
JavaScript一些数据类型介绍
JavaScript一些数据类型介绍 1)数字类型(Number):可以表示整数和浮点数,例如:42、3.14159。 var x 42; // x 的类型是 Number var y 3.14159; // y 的类型是 Number2)字符串类型(…...
正向代理和反向代理与负载均衡
自存用 什么是反向代理,反向代理与正向代理的区别 一文帮你梳理清楚「正向代理和反向代理的区别与联系」 什么是反向代理服务器 正向代理为用户服务,给用户换个ip使其能访问其他网站 反向代理为服务器服务,使用户访问特定网站服务器。反向代…...
制造执行系统(MES)的核心功能是什么?
“一般来讲,制造执行系统(MES)的功能模块包括过程监控,质量管理,设备监控,计划执行等功能模块。” 为了深入探讨MES的核心功能,本文将从以下3个方面展开说明: 首先,从概…...
uniapp如何使用mumu模拟器
模拟器安装 下载地址:MuMu模拟器 模拟器相关设置 1.在设置-显示中选中手机版,设置手机分辨率 2.设置-关于手机-版本号快速点击,将其设置为开发者模式 3.选择多开器 4.打开hbuilderx,找到adb设置 5.配置adb路径及端口号&#x…...
【MATLAB源码-第64期】matlab基于DWA算法的机器人局部路径规划包含动态障碍物和静态障碍物。
操作环境: MATLAB 2022a 1、算法描述 动态窗口法(Dynamic Window Approach,DWA)是一种局部路径规划算法,常用于移动机器人的导航和避障。这种方法能够考虑机器人的动态约束,帮助机器人在复杂环境中安全、…...
阿里云国际版和国内版的区别是什么,为什么很多人喜欢选择国际版?
阿里云国际版和国内版区别如下: 谈到区别,我们不妨先来对比下相同点与不同点,才能清晰明确的知道二者区别 下面先介绍不同点: 面向市场更广泛 阿里云国际版主要是面向国际(全球)客户的,而国内…...
监听redis过期业务处理
配置类: package com.testimport org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.c…...
计算机网络与技术——数据链路层
😊计算机网络与技术——数据链路层 🚀前言☃️基本概念🥏封装成帧🥏透明传输🥏差错检测 ☃️点对点协议PPP🥏PPP协议的特点🥏PPP协议的帧格式🔍PPP异步传输时透明传输(字…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
