常见算法之排序(基础部分)_冒泡+选择+插入排序_01

葵花(Himawari)8/9卫星数据处理 李国春 葵花8(含葵花9,下同)是静止气象卫星,数据范围是星下点为140°E赤道上空的大圆盘。空间分辨率有500m、1km和2km三种。虽然其空间分辨率不高,但是有极高的时间分辨率,观测数据刷新仅10分钟。这对一些生态、农业和大范围自然灾害的动态检测具有非常高的应用价值。本文介绍如何使用RSD处理葵花8数据。 阅读详情

最基础的常见排序算法有:

    冒泡排序(Bubble Sort)

    选择排序(Select Sort)

    插入排序(Insert Sort)

这三个的排序算法的时间复杂度都为O(n²),比较慢;空间复杂度都为O(1)。

--------------------------------------------------Java代码------------------------------------------------------------

public class Code_01_Sort 
{
	public static void main(String[] args) 
	{
		//初始化数组
		int len = (int)(Math.random()*20);//随机生成20以内的数组长度
		int[] arr = new int[len];
		for(int i = 0; i < len; i++)//在数组内随机生成1000内的值
		{
			arr[i] = (int)(Math.random()*1000) - (int)(Math.random()*1000);
		}
		
		//bubbleSort(arr);//调用冒泡排序
		//selectSort(arr);//调用选择排序
		//insertSort(arr);//调用插入排序
		mergeSort(arr);//调用归并排序
		
		
		for(int i = 0; i < len; i++)//格式化输出数组
			System.out.printf("%02d:%-+4d\n",i,arr[i]);

	}
	
	public static void bubbleSort(int[] arr)
	{//冒泡排序:每次遍历都会把未确定排序区间的最大值排到后面去
	//具体做法:每次比较的都是相邻的两个元素,如果后面的元素比前面的元素小,则交换位置。
	//每遍历一次,确定排序区间(在数组的后部分)的元素个数+1
		System.out.println("冒泡排序:");
		for(int end = arr.length-1; end > 0; end--)
		{//每遍历一次都会把最大值放到arr[end]的位置上
			for(int i = 0; i < end; i++)//从arr[0]开始往前遍历到arr[end],arr[i]和相邻下一个的元素做比较
			{
				if(arr[i] > arr[i+1])//若比下一个元素大,则交换位置
				{
					int tmp = arr[i];
					arr[i] = arr[i+1];
					arr[i+1] = tmp;
				}
			}
		}
	}
	
	public static void selectSort(int[] arr)
	{//选择排序:每次遍历都会把未确定排序区间的最小值排到前面去
	//具体做法:每个元素都和未确定排序区间的第一个元素进行比较,若比第一个元素小,则交换位置。
	//每遍历一次,确定排序区间(在数组的前部分)的元素个数+1
		System.out.println("选择排序:");
		for(int i = 0; i < arr.length-1; i++)
		{//每遍历一次都会把最小值放到arr[i]的位置上
			for(int j=i+1; j < arr.length; j++)//从arr[i+1]开始往后遍历,依次和arr[i]比较
			{
				if(arr[i] > arr[j])//如果有比arr[i]小的元素,则与arr[i]交换位置。
				{
					int tmp = arr[i];
					arr[i] = arr[j];
					arr[j] = tmp;
				}
			}
		}
	}
	
	public static void insertSort(int[] arr)
	{//插入排序:类似在玩扑克时调整扑克顺序的做法
	//具体做法:每个元素都依次与他前边所有的元素做比较,如果比前边某个元素小,则交换位置。
	//每遍历一次,确定排序区间(在数组的前部分)的元素个数+1
		System.out.println("插入排序:");
		for(int i = 1; i < arr.length; i++)
		{//每遍历一次都会在已排序区间中找到适合arr[i]元素的位置
			for(int j = i; j >0; j--)//从arr[i]元素开始,往前遍历到arr[i-1]
			{
				if(arr[j] < arr[j-1])//如果发现arr[i]元素比它前面相邻的arr[i-1]元素小,则与前面元素交换位置
				{
					int tmp = arr[j];
					arr[j] = arr[j-1];
					arr[j-1] = tmp;
				}
			}
		}
	}
	
	
}

【MicroPython编程-ESP32篇:设备驱动】-SHT31温度湿度传感器驱动 SHT31 是 Sensirion 的下一代温湿度传感器。 它建立在一个新的 CMOSens® 传感器芯片之上,该芯片是 Sensirion 新湿度和温度平台的核心。 阅读详情

相关推荐

NFS共享速度慢?麒麟系统性能调优5个关键参数实测对比

本文针对银河麒麟服务器系统上NFS共享速度慢的问题,通过实测对比分析了五个关键调优参数。重点探讨了rsize/wsize传输块大小、TCP/UDP协议选择、sync/async模式权衡等,并结合麒麟系统特性提供了具体的优化建议与配置示例,旨在帮助用户有效提升国产化环境下的文件共享性能。

weixin_29254029的博客 335

常见的数组排序算法(冒泡排序/选择排序/插入排序/快速排序)

​ .冒泡排序 数组元素两两比较,大的元素往后放,经过一轮比较,最大的元素就出现在了最后面。 ​ 选择排序 从0索引处开始,拿一个元素,跟他后面的元素挨个比较,小的往前放,经过一轮比较,最小的元素就出现在了最前面 ​ 插入排序 将后面的元素,插入到之前的有序列表中,然后比较使之仍保持保持有序。 ​ .快速排序 挖坑填数法: 将基准数挖出形成第一个坑。 由后向前找比他小的数,找到后挖出此数填到前一个坑中。 由前向后找比他大或等于的数,找到后也挖出此数填到前一个坑中。 再重复执行2,3两步骤。 ​ ​

naoguoteng的博客 587

MAPLAB X IDE仿真调试

一、开发环境 操作系统:Windows 10 调试工具:Pickit3 单片机型号:PIC24FJ32GA002 二、操作步骤 1、连接Pickit3仿真器于单片机对应的烧写口如图示: 2、点击调试项目进入调试模式,这时底下输出框显示"运行"代表成功进入调试模式。 3、选择断点,该IDE只支持两个断点,使用超过两个时,超过的断点亮灰色代表无效。设置好断点后需暂停然后再重新点击运行才能生效。可以看到在断点处有绿色光标。 ...

RealHero的博客 5084

三种常见的排序算法(冒泡排序,选择排序,插入排序)

冒泡排序: 按照冒泡排序的思想,我们要把相邻的元素两两比较,根据大小来交换元素的位置,过程如下: def Bubble_sort(list): for i in range(len(list)-1): # 外循环控制循环的次数 for j in range(len(list) - i-1): # 内循环控制遍历到哪一位 ...

Casey 635

VESC电调高级调参指南:电机校准与性能优化实战解析

本文详细解析了VESC电调的高级调参方法,包括电机校准与性能优化实战技巧。从基础参数设置到高级机械参数优化,再到动态性能调优,提供了全面的调参指南。特别针对电机类型、功率设置、电池参数配置等关键环节给出实用建议,帮助用户充分发挥VESC电调的性能潜力。

weixin_30772105的博客 196

用Navicat轻松管理魔兽世界私服数据库:修改IP、添加装备的实用技巧

本文详细介绍了如何使用Navicat管理魔兽世界私服数据库,包括修改服务器IP、添加自定义装备和调整角色属性等实用技巧。通过专业的SQL操作指南,帮助玩家轻松实现私服的高级定制,提升游戏体验。

fanta的博客 941

三种基础排序算法(选择排序、插入排序、冒泡排序)

注:  图片转自点击打开链接  以下均使用升序介绍。 选择排序: 从数组中找到最小的元素,和第一个位置的元素互换。   从第二个位置开始,找到最小的元素,和第二个位置的元素互换。  ........  直到选出array.length-1个较小元素,剩下的最大的元素自动排在最后一位。 代码实现:

weixin_38830382的博客 3万+

LTE信令流程及业务流程

eNB返回E-RAB建立响应消息,E-RAB建立列表信息中包含成功建立的承载信息,E-RAB建立失败列表消息中包含没有成功建立的承载消息。3)当下行数据达到时,网络侧先对UE进行寻呼,随后UE发起随机接入过程,并发起service request过程。用户面:S-GW向eNB发送承载建立请求,包含(IMSI, QoS, TFT, TEID, LBI等)控制面:MME向eNB发送E-RAB建立请求,包含E-RAB ID,QoS,S-GW TEID。3)在S1接口上建立S1承载,在Uu接口上建立数据无线承载。

qq_44390640的博客 4582

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

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

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

新凯来嵌入式面经及参考答案

利用编译器预定义宏判断目标架构,如。

大模型大数据攻城狮的专栏 2065

MALTAB程序利用质心法去寻峰

质心法的优点是简单易实现且计算速度快,适用于数据点较少或峰值较明显的情况。然而,对于复杂的数据或多峰曲线,质心法可能无法准确识别所有峰值,因此在这些情况下可能需要使用更复杂的峰值检测算法。质心法(Centroid Method)是一种寻找峰值的方法,其基本原理是通过计算数据窗口内的质心位置来确定峰值的位置。质心是指在一维数据中,按照数据的幅值对位置进行加权平均的结果,即质心位置为数据幅值加权平均值的位置。变量定义了计算质心的窗口大小。最后,绘制了找到的峰值位置和幅值点,并显示了找到的峰值位置和幅值的结果。

走向CTO的路上... 1347

终于有人把排序算法讲明白了

导读:恰当地选择排序算法既取决于当前输入数据的规模,也取决于当前输入数据的状态。对于已经排好序的较小的输入列表,使用高级算法会给代码带来不必要的复杂度,而性能的提升可以忽略不计。在大数据时...

华章IT官方博客 7559

lammps后处理:ovito选择原子高级技巧讲解

大家好,我是小马老师。 本文介绍如何在ovito中使用公式(Expression)选择需要的原子。 用ovito查看lammps模拟结果时,可能会遇到选择特定原子的情况,比如选择坐标位于一定范围内的原子,或者选择结构为fcc的原子等等。 这时候,就需要用到expression selection功能。 Expression selection功能比较强大,下面分别介绍几种选择原子的方法。 在输入公式前,先点击“Add modification”->"Expression selection"选项,在B

lammps_jiayou的博客 2万+

黑马Java零基础视频教程精华部分_17_冒泡排序、选择排序、插入排序、快速排序

它重复的遍历过要排序的数列,一次比较相邻的两个元素,如果他们的顺序错误就把他们交换过来。第一趟比较如下图所示:每当发现两个数不满足小的放前面,大的放后面时,就进行交换。这个算法的名字由来是因为越大的元素会经由交换慢慢"浮"到最后面。冒泡排序(Bubble Sort)也是一种简单直观的排序算法。当然,大家可以按照从大到小的方式进行排列。

buyaotutou的博客 943

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

常见算法实现系列01 - 排序算法

常见算法实现系列01 - 排序算法

weixin_46676835的博客 836

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

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

数据结构和算法分析之冒泡排序+选择排序+插入排序的时间复杂度分析

认识时间复杂度 常数时间的操作:一个操作如果和数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。 时间复杂度为一个算法流程中,常数操作数量的指标。常用O(读作big O)来表示。具体来说,在常数操作数量的表达式中,只要高阶项,不要低阶项,也不要高阶项的系数,剩下的部分如果记为f(N),那么时间复杂度为O(f(N))。 评价一个算法流程的好坏,先看时间复杂度的指标,然后再分析不同数据样本下...

Tunaep的博客 5453

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

排序算法01 | 冒泡、插入、选择、快速、归并

冒泡、插入、选择、快速、归并

weixin_45055622的博客 818

排序算法:冒泡、选择、插入、希尔、快速

常见的排序方法: 1:冒泡排序 2:选择排序 3:插入排序 4:希尔排序 5:堆排序 6:归并排序 7:快速排序 一、冒泡排序: 思想:逐个对比,逐个交换,把一个最大值或最小值放到队列尾部,下一次将次大值或次小值放到倒数第二位,以此类推知道排序结束。 例: 将[2,3,1,5]排序: list_01=[2,3,1,5] for i in range(len(li...

weixin_43800846的博客 1123

11-C++算法01-枚举排序

在编程中,算法是解决问题的一系列步骤或规则。在C++中,提供了丰富的算法库,可以方便地进行各种常见的算法操作。

mingfeng4923的博客 2542

java四大排序方法(冒泡,选择,插入,快速)from 黑马

以下是对四大排序算法的详细解说,若有不妥当的欢迎指正!四大排序 在算法中是基础中的基础 对于基础小白来说是有一点点难度的,一起努力攻克,每一步沉淀都是为了迎接更好的自己,祝愿大家以后写程序无bug!!撒花★,°.°★。

m0_74107869的博客 1536

python之三大基础排序算法——冒泡、选择、插入

一、排序介绍 二、冒泡排序 三、选择排序 四、插入排序 排序目的就是将一组无序的记录序列调为有序的记录序列列表排序:将无序列表变为有序列表分为升序和降序python的内置排序函数:sort()常用的排序算法:排序Low B三人组:冒泡排序、选择排序、插入排序排序NB三人组: 快速排序、堆排序、归并排序其他排序:希尔排序、计数排序、基数排序这篇文章先来介绍排序的Low B三人组这三大排序的时间复杂度为O(n^2),且均为原地排序可以通过检查算法效率来验证。

m0_58820574的博客 844

数据结构——冒泡、选择、插入和希尔排序

数据结构——排序 第一篇 求点赞收藏关注!!!

2301_80401288的博客 1137

常见排序算法

算法研究

qq_53481873的博客 3119

数据结构和算法:03.冒泡、选择、插入排序

冒泡、选择排序知识点:1. 宏定义`Log`打印2. rand() 随机3. 冒泡排序4. 选择排序 具体代码请看:NDKPractice项目的datastructure 知识点: 1. 宏定义Log打印 #define TAG "TAG" #define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,TAG,__VA_ARGS__) // 其他方法的定义 __android_log_print 取了一个别名(参数固定,可变) 2. rand() 随机 /

东方升起代码的博客 241

Java常见排序方法

日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。 以下常见算法的定义 1. 插入排序:插入排序基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入排序的基本思想是:每步将一个待排序的纪录,按其关...

Leondon的博客 4457

【三种简单的排序算法:冒泡,选择,插入排序(简单易懂版)】

冒泡排序,选择排序,插入排序以及对时间复杂度的认识

weixin_61536526的博客 1266
上一篇: PAT乙级Java实现_1001. 害死人不偿命的(3n+1)猜想_附详细解题注释_01
下一篇: 常见算法之排序(进阶部分)_归并排序_02
coder__666
博客等级 码龄9年 42粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值