冒泡排序、选择排序、插入排序

告别串口升级!手把手教你为STM32H750的W25Q32制作MDK下载算法(QSPI篇) 本文详细介绍了为STM32H750的W25Q32制作MDK下载算法(QSPI篇)的完整流程,帮助开发者告别低效的串口烧录方式。通过定制下载算法,可实现20倍以上的烧录速度提升,支持完整的调试功能,显著提高开发效率。文章涵盖环境准备、核心算法实现、性能优化及常见问题解决方案,适合嵌入式开发者参考。 阅读详情

排序

1.冒泡排序:(面试)

每一次比较相邻的两个元素---->相邻比较
根据需要决定是否进行交还---->合规交换

每一轮交换完毕之后,总能把最大值或者最小值放到最后,下一轮比较的时候,之前的最值不再参与比较.剩下的元素按规则比较,以此类推…
需要的轮数 = 元素的个数-1
每一轮中比较的次数 = 待比较的元素个数-1

代码:

import java.util.Arrays;

/**
 * @author CC
 * 冒泡排序(从小到大)
 * 面试
 */
public class BubbleSort {

	public static void main(String[] args) {
		int[] arr = new int[] {-1,5,6,9,9,5,2};
		
		for (int i = 0; i < arr.length-1; i++) {
			//内存循环控制具体每一行的比较
			boolean flag = true;
			for (int j = 0; j < arr.length-1-i; j++) {
				if (arr[j]>arr[j+1]) {
					int temp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = temp;
					flag = false;
				}
			}
			if (flag) {
				break;
			}
		}
		System.out.println(Arrays.toString(arr));
	}
}

2.选择排序:(面试)

1)预先选择一个位置,假设该位置是最值,必须先指定一个顺序(要么从前往后,要么从后往前)
2)吧后面所有待比较的数和当前位置的数合规之后使用第三方的index记录合规数值的位置(数组中元素的下标),等到最后一个元素比较完毕后,再进行交换,在一次比较中,交换只发生一次.
注:交换只发生一次,效率比冒泡高

在这里插入图片描述

代码:

  import java.util.Arrays;

/**
 * @author CC
 *选择排序(从小到大)
 *面试
 */
public class SelectSort {

	public static void main(String[] args) {
		int[] arr  = new int[] {5,6,9,8,3,2,6,0,1,7};
		//外层循环控制轮数
		for(int i=0;i<arr.length-1;i++) {
			int index = i;   //每轮假设一个最小下标值
			
			for (int j = i+1; j < arr.length; j++) {//内层循环负责找到一个最小值放到从前面数第一个待排序的位置
				if (arr[index]>arr[j]) {
					index = j;
				}
			}
			
			if (index != i) {
				int temp = arr[index];
				arr[index] = arr[i];
				arr[i] = temp;
			}
		}
		System.out.println(Arrays.toString(arr));
	}
}

3.插入排序

import java.util.Arrays;

/**
 * @author CC
 * 插入排序
 */
public class InsertSort {

	public static void main(String[] args) {
		int[] nums = {34,4,56,17,90,65};
		for (int i = 1; i < nums.length; i++) {
			int temp = nums[i];
			int j = 0;
			for (j = i-1; j >= 0; j--) {
				if (nums[j]>temp) {
					nums[j+1] = nums[j];
				}else {
					break;
				}
			}
			if (nums[j+1] != temp) {
				nums[j+1] = temp;
			}
		}
		System.out.println(Arrays.toString(nums));
	}

}

小结:

排序算法时间复杂度是否基于比较是否是原地排序算法
冒泡/选择/插入O(n^2)√都是
快排/归并O(n*logn)√快排是,归并不是
桶/计数/基数O(n)×都不是

注:
原地排序算法:特指空间复杂度是O(1)的排序算法

C# HttpClient完全攻略:从入门到精通只需5步 HttpClient是.NET框架中用于发送HTTP请求和接收HTTP响应的类。它基于异步编程模型,使得网络操作更加高效和灵活。 阅读详情

相关推荐

Python3.8下MvCameraControl.dll加载失败?3种方法彻底解决FileNotFoundError

本文针对Python3.8及以上版本在Windows平台调用MvCameraControl.dll时出现的FileNotFoundError问题,深入剖析了其根源在于Python 3.8引入的DLL加载安全机制变更。文章提供了三种核心解决方案:显式指定DLL完整路径、使用os.add_dll_directory()添加可信目录,以及利用ctypes的winmode参数进行精细控制,并给出了工程化封装建议,帮助开发者彻底解决此兼容性问题。

weixin_29093017的博客 189

【排序详解】冒泡、选择、插入

外层循环从索引0开始,依次遍历数组中的元素,内层循环从外层循环位置的下一个索引开始,找到未排序部分的最小元素,并将其索引赋值给变量min。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找最小(大)元素,将其放到已排序的序列的末尾。此算法从小到大排序的基本原理是:每一趟排序讲待排续空间中每一个元素与后一个进行比较,若存在小于关系,则进行冒泡(交换),一趟排序下来以后,待排序空间中的最后一个元素最大。借助从网上流传最广的图片理解。

无敌岩雀的博客 1435

Cadence psspxf实战:手把手教你仿真250MHz环形VCO的电源抑制比(附Verilog代码)

本文详细介绍了使用Cadence psspxf仿真器对250MHz环形VCO的电源抑制比(PSRR)进行仿真的全流程。从环形VCO的设计原理、Verilog代码实现,到Cadence环境配置、仿真参数设置,再到结果分析与优化技巧,提供了完整的实战指南。特别适合电路设计工程师学习如何评估和优化VCO的抗电源噪声能力。

weixin_42567752的博客 414

C语言——排序(冒泡,选择,插入)

冒泡排序 选择排序 插入排序

m0_64782700的博客 1561

【MMDetection3.0实战】从零构建自定义数据集训练流程

本文详细介绍了使用MMDetection3.0框架从零开始构建自定义目标检测数据集的完整训练流程。内容涵盖环境配置、COCO格式数据准备、核心代码改造、模型配置与训练策略调优,以及最终的模型测试与验证,帮助开发者快速上手并训练自己的检测模型。

l6m7n8的博客 313

避坑指南:CoppeliaSim逆运动学仿真常见报错解决方案(附UR5+RG2爪完整Lua脚本)

本文针对CoppeliaSim机器人仿真中常见的逆运动学报错问题,提供了详细的避坑指南和解决方案。文章以UR5机械臂与RG2夹爪组合为例,深入剖析了模型装配、Dummy节点配置、Lua脚本编写等关键步骤中的常见错误,并附带了完整的、带错误处理的脚本代码,帮助用户快速定位并解决IK仿真失败问题,提升仿真效率。

weixin_29054399的博客 267

三种排序浅析

【代码】三种排序浅析。

Wneosy的博客 455

Linux下开机异常(fsck exited with status code 4)

Linux下开机异常事情是这样的,本来我呢跑着程序听着歌,结果忽然就死机了,我只能强制关机,再次打开系统的时候,就提示这样fsck from util-linux 2.26.2 /dev/sda10 contains a file system with errors, check forced. /dev/sda10: Inodes that were part of a corrupted pr

芳草碧连天 2万+

【算法】排序算法(插入排序、希尔排序、选择排序、冒泡排序、快速排序、归并排序、基数排序、堆排序)

八大排序算法(插入排序、希尔排序、选择排序、冒泡排序、快速排序、归并排序、基数排序、堆排序)

酷酷的馫博客 1万+

EDA工具安装第一步:Synopsys Installer的配置与图形化界面使用详解

本文详细解析了EDA工具安装的关键第一步——Synopsys Installer的配置与使用。文章阐述了其作为统一部署管理器和依赖协调者的核心作用,并分步详解了如何通过图形化界面高效安装EDA工具,同时介绍了命令行批处理等进阶技巧,旨在帮助工程师快速搭建稳定的芯片设计环境。

zeta9的博客 339

YOLOv8多传感器融合技术——摄像头阵列融合技术详解

本文详细介绍了基于YOLOv8的摄像头阵列融合技术,该技术通过多摄像头协同工作实现360度无死角环境感知。文章阐述了系统原理,包括全方位视野覆盖、冗余设计和深度感知等优势,并提供了完整的Python实现代码。关键技术涵盖多摄像头检测、立体匹配、3D投影和目标融合等模块,支持时间域融合提升稳定性。该系统可显著提高自动驾驶的环境感知能力,减少检测盲区,增强系统可靠性,是L4-L5级自动驾驶的关键技术之一。文章还展示了城市驾驶场景的实际应用,验证了该技术对复杂交通环境的适应能力。

u010117029的博客 213

简单排序——选择排序、冒泡排序、插入排序

本文利用示例和图示的方法详细阐述了简单排序(选择排序、冒泡排序、插入排序)的算法原理和过程,并给出对应的代码供读者参考。

weixin_65472178的博客 7069

海康Visionmaster-全局脚本:VM 加载方案后自动执行 的方法,如何让VM在方案加载后自动执行流程?

海康Visionmaster-全局脚本:VM 加载方案后自动执行 的方法,如何让VM在方案加载后自动执行流程?

视觉人机器视觉的博客 2035

冒泡排序、插入排序、选择排序

排序1 冒泡排序1.1冒泡排序的流程及代码2 插入排序2.1插入排序的流程及代码3 选择排序3.1选择排序的流程及代码 1 冒泡排序 它是通过一系列的”交换“动作完成的。首先第一个关键字和第二个关键字比较,如果第一个大,则二者交换,否则不交换;然后第二个关键字和第三个关键字比较,如果第二个大,则二者交换,否则不交换…一直按这种方式进行下去,最终最大的那个关键字被交换到了最后,一趟起泡排序完成。经过多趟这样的排序,最终使整个序列有序。这个过程中,大的关键字像石头一样”沉底“,小的关键字像气泡一样逐渐向上”浮动

makunIT的博客 5588

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

(一)冒泡排序、选择排序、插入排序

最近在看数据结构与算法分析,想写个笔记记录一下,先从基本的冒泡、选择、插入开始吧。 注:都是以增序为例说明 一、冒泡排序        1、原理:从数组的第一个位置开始两两比较array[index]和array[index+1],如果array[index]大于array[index+1]则交换array[index]和array[index+1]的位置,止到数组结束;

hijiankang的专栏 5万+

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

三大基础排序 -选择排序、冒泡排序、插入排序

介绍了冒泡排序、插入排序、选择排序的思想、流程,和代码

hi,这里是Ying_526_,欢迎关注 1万+

冒泡排序、选择排序、插入排序的Python实现

文章目录冒泡排序选择排序插入排序 冒泡排序 冒泡排序思想是最简单的排序思想之一。就是采用暴力的方法,由于这种算法思想的缘故,就像是让最大的数像泡泡一样滚动,所以叫冒泡排序。 Python实现: def bubble_sort(alist): for j in range(len(alist)-1,0,-1): # j表示每次遍历需要比较的次数,是逐渐减小的 ...

九久的博客 361

插入排序和直接选择排序都是稳定的_冒泡排序、选择排序、插入排序

排序算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。算法复杂度稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b...

weixin_30375113的博客 4708

插入排序,冒泡排序,快速排序,选择排序快速理解

1.插入排序 2.冒泡排序 3.快速排序 4.选择排序

二哈的博客 652

冒泡排序、选择排序、插入排序总结

排序(sort)就是将无序的数据按照特定的规则排成有序数据(升序、降序)。这篇文章我们来了解一下Java中常见的三种排序方式,即冒泡排序、二分查找、插入排序。既然要排序,那么就要考虑时间复杂度和空间复杂度这两个因素,我们可以在System.currentTimeMillis()里面查看。......

HAN&BLOG 999

插入排序、选择排序和冒泡排序详解

排序对于任何一个程序员来说可能都不陌生,在我们日常的开发中多多少少都会涉及到排序的场景,如按照订单交易时间排序,按照金额排序等等。很多语言都内置了相应的排序函数,而且讲起排序算法时都可以列出一大堆,此文初步探索下插入排序,选择排序和冒泡排序。 此处先说明下排序算法的稳定性: 稳定性,这个概念是说,如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变,如下待排序的序列。 图中框住的两个元素2,排序后相对位置不变,前面的2还是在前面,后面的2还是相对在后面。其实你也许有疑问.

码农笔记 1625

插入排序,冒泡排序,选择排序

三大排序的基本内容。冒泡排序,插入排序,选择排序

xieyihu的博客 162

冒泡排序,插入排序,选择排序

在学习冒泡排序、插入排序以及选择排序的过程中的一些小总结,希望大家多多来提建议!!

vincent_vang的博客 388
上一篇: Eclipse快捷键
下一篇: 动态规划算法
cuichen97
博客等级 码龄7年 34粉丝 209原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值