排序

【常见的六大排序算法】插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序 在实现排序前,我们要先知道什么是排序。排序:简单的来说就是把一串数据按照一定的方式依次排序。例如:可以按照数字的大小升序或降序排列,或者按照英文字母的先后顺序排列等。使用这一系列的方式,就可以将一串无序状态下的数据排列成有序的数据。 阅读详情

排序

前言

一些排序方法在对多个数的排序上能够简化很多步骤,其主要依靠的是数组,通过数与数之间的不断交换来实现功能,这里简单介绍一下冒泡排序和选择排序。

方法一——冒泡排序

我们这里用以小到大的顺序来排。我们先来理一理思路,要让小的数冒到前面来,我们是不是可以尝试将小数和大数交换位置?即每一次只需要考虑前面的数是不是大于后面的数,是就调位置,不是就试下一组,这样逻辑就很清晰了,而且比较简单。

//我们先来创建一个数组
int[] num = {5,3,1,2,6,4};
//然后是for循环
for(int j = 0;j<num.length;j++) {
	for(int i = 0;i<num.length-1;i++) {
	int f = num[i];
		if(num[i]>num[i+1]) {
		//如果下一个数要小一些就调换位置
			num[i] = num[i+1];
			num[i+1] = f;
			/*与此同时下一个数的位置要变成前一个数,否则就会丢失数据
			所以要在最前面记录一个num[i]的中间值,将其赋值给后一个位置
		}
}

!注意:num.length表示数组的元素个数,而为什么要-1呢。我们想一想我们要调换的是前一个数和后一个数,如果我们没有减一,那么for循环就会进行到最后一个数上,而最后一个数就没有下一个数了。

这就是比较简单的冒泡了,让我们看看结果。
在这里插入图片描述

方法2——选择排序

让我们思考一下,有没有一种方法寻找到指定数之后的最小数,直接将后面最小的数和前面的数来交换,这就是即将介绍的方法2

首先还是理一下思路,我们指定一个数后就要让其和后面的所有数比较,如果有比它小的数就记下,然后寻找后面有没有比这个小数还要小的数,然后再将最小数和指定的数交换,这就是一个完整的过程。

int[] num = {5,3,1,2,6,4,9,7,8};
for(int j = 0;j<num.length-1;j++) {
	int f = num[j],k=j;/*用k表示指定数的位置,这和方法一不一样,因为我
	们要找到指定的最小数是第几个,这样才方便赋值,而现将j赋值给k是为了让
	第一次选出来的较小数都一定能够小于num[k]*/
	for(int i = j+1;i<num.length;i++) {
		if(num[j]>num[i]) {
			//找到了较小数,还要判断它是不是最小数
			if(num[i]<num[k]) {
				k=i; 	//确定是比较小数还要小的数就记录下来
				num[j]=num[k];
				num[k]=f;
			}
		}
	}
}

这就是方法二,让我们来看看运行结果
在这里插入图片描述

总结

以上就是目前我知道的两种冒泡排序,这里我展示一下它们的动画版,便于大家理解

冒泡排序
冒泡排序
选择排序
选择排序

七大排序算法:插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序 史上最全的排序讲解 阅读详情

相关推荐

【排序】插入排序,希尔排序

以上是对插入排序和希尔排序的分析,是一种新的排序思想,其中的种种知识点也很碎很多,希望大家能够有所收获。

2302_80220453的博客 1018

用java写一个简易的计算器界面

如何用java写一个简易的计算器界面 前言(与本节重点无关可以忽视) 最近了解了一些界面窗口知识,在老师一步步的悉心教导下我却又一次地走向了迷茫——陌生,理解不充分,照搬。咳咳,但是经过几天的拆解,琢磨,实践,我也渐渐粗浅地认识到了一些本质问题。当时教写的是登录界面,所以这次我打算写一个计算器界面来检测一下自己是不是依然一头雾水。 基本准备 首先给类取名CaculatorInterface(计算器界面) package kallen1014; public class CalculatorInterf

CatCatchCap的博客 7399

【Docker】如何让docker容器正常使用nvidia显卡

描述了如何在docker容器中使用英伟达显卡的过程和问题解决方法。

NameLoadingFailed的博客 8372

类与对象

类与对象——Java面向对象编程对类和对象的理解类和对象在java中的具体表现形式具体例子 对类和对象的理解 要弄清楚面想对象是怎么回事首先要理解类和对象的概念。 所谓类即一个种类,比如电脑就是一个类,而电脑有很多品牌吧,华为,联想,华硕之类的,这些就是类中的对象。 为什么把它们当作一类呢,因为它们都有共同的属性,特征,功能等等。 在java中代码都是以类为单位的,而拥有相同属性的对象就存在于类当中 类和对象在java中的具体表现形式 类在java中即class。我们在写每一份代码之前都会先创建一个类,把将

CatCatchCap的博客 241

STM32与AD7606的SPI通信优化:提升高精度数据采集效率

本文深入探讨了STM32与AD7606的SPI通信优化策略,旨在提升高精度数据采集系统的效率与稳定性。文章从硬件连接、电源去耦、PCB布局等基础环节入手,详细解析了软件驱动中SPI模式配置、DMA应用及精准时序控制等关键优化技术,并提出了系统级的性能提升方案,帮助开发者解决高速采样下的数据跳动、效率瓶颈等实际问题。

weixin_29192211的博客 393

第5.1节 构网控制:电压源特性与电压调节

摘要: 构网型变流器的核心物理本质是作为可控交流电压源,通过戴维南等效模型(受控电势源+低输出阻抗)自主建立并调节电压,增强电网电压刚度。其电压调节通过无功-电压闭环控制实现,内环为自动电压调节器(AVR),外环为无功-电压下垂特性,模拟同步发电机功能。关键技术包括自适应增益、虚拟阻抗补偿及动态限流策略,以应对弱电网稳定性、故障过流等问题。该设计满足《规范》对电压调节范围、动态无功支撑的要求,是高比例新能源电力系统电压稳定的关键解决方案。

技术工作者 1110

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

文章目录:1. 插入排序2.希尔排序 1. 插入排序 步骤: 1.从第一个元素开始,该元素可以认为已经被排序 2.取下一个元素tem,从已排序的元素序列从后往前扫描 3.如果该元素大于tem,则将该元素移到下一位 4.重复步骤3,直到找到已排序元素中小于等于tem的元素 5.tem插入到该元素的后面,如果已排序所有元素都大于tem,则将tem插入到下标为0的位置 6.重复步骤2~5 动图演示如下: 思路:   在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个

HanMeng的博客 69万+

华为HPLC模组全拆解之电力载波收发原理分析

电力线载波通信(PLC)是一种使用电力线进行数据传输的通信技术,即利用现有电网作为信号的传输介质,使电网在传输电力的同时可以进行数据传输。目前根据所用频段的不同,低压电力线载波通信一般分为窄带电力线载波通信(10KHz~500KHz)和宽带电力线载波通信(2MHz~20MHz)。这里的频率可以简单理解为单片机串口的通信波特率,频率越小通信速度越慢,频率越大通信速度越快。为了研究电力载波通信原理,笔者以华为的一款宽带电力载波模组为例进行详细的分析,该模组主控采用的是海思芯片,型号为Hi3921EV100。

xingxingdiandeng69的博客 2万+

常见排序算法(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序,基数排序,桶排序)

常见排序算法(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序,基数排序,桶排序)

2301_80288511的博客 3163

使用buildroot系统的qmake编译QT出现Unknown module(s) in QT: xxxx 的错误解决方法

可以看到,我这里使用的是 qt5base-5.15.2 目录下的qmake,这个qmake只包含了基础的qt模块,而额外添加的qt模块没有包含进去,需要使用。可以看到我这里是有的,如果你跟我一样,模块存在,但是还是报找不到对应模块的错误的话,大概率是跟我一样,用错qmake了,看第二点。在包含 qt5base 目录下查看,是否有对应模块的目录,如果没有的话,需要通过make menuconfig 添加一下。目录下的qmake才可以。

T541132的博客 2490

ubuntu-25.04-desktop-amd64 工具VMware-tools 正确安装方法

摘要:Ubuntu 25.04虚拟机安装VMware Tools后无法实现主机与虚拟机间的文件复制粘贴和拖拽功能,问题可能源于工具兼容性。建议优先安装open-vm-tools套件(含open-vm-tools-desktop),而非官方VMware Tools。具体方案:通过终端执行安装命令后重启系统。该方法已实测有效解决该兼容性问题。(149字)

安徽锐锋科技-沐雨潇竹 672

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

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

酷酷的馫博客 1万+

代数拓扑与AI架构:AI应用架构师深入探索数学研究如何分析复杂系统的结构特性

随着人工智能技术的飞速发展,AI系统变得越来越复杂。AI应用架构师需要有效的工具和方法来理解、设计和优化这些复杂系统。代数拓扑作为数学的一个分支,提供了独特的视角和技术来分析复杂系统的结构特性。本文旨在帮助AI应用架构师深入了解代数拓扑,以及如何将其应用于AI架构设计中,提升对复杂系统的分析能力。首先,我们会介绍代数拓扑和AI架构相关的核心概念及其联系,通过有趣的故事引入主题,让读者轻松理解复杂概念。接着,深入探讨代数拓扑的核心算法原理,结合具体的编程语言代码示例详细阐述。

大模型应用工坊 671

算法——十大排序(冒泡排序,选择排序,堆排序,插入排序,归并排序,快速排序,希尔排序,计数排序,基数排序,桶排序)

排序算法准备算法模板冒泡排序(Bubble Sort)定义执行流程代码实现选择排序(Selection Sort)定义执行流程代码实现插入排序(Insertion Sort)定义执行流程代码实现希尔排序(Shell Sort)定义执行流程代码实现堆排序(Heap Sort)定义执行流程代码实现归并排序(Merge Sort)定义执行流程代码实现快速排序(Quick Sort)定义执行流程代码实现计数排序(Counting Sort)定义执行流程代码实现基数排序(Radix Sort)定义执行流程代码实现桶排

mazouri的博客 5023

华为OD机试双机位B卷 - 比赛的冠亚季军 (C++ & Python & JAVA & JS & GO)

华为OD机试双机位B卷 比赛的冠亚季军,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。 华为OD机试 比赛的冠亚季军

qq_45776114的博客 703

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

排序算法相关总结,涉及的排序算法有:插入排序、冒泡排序、选择排序、希尔排序、堆排序、快速排序。

qq_53130059的博客 5646

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

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

weixin_65472178的博客 7072

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...

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【算法】六大排序 插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序

六大排序 插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序

一点一点变好 3593

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

相关博客: 排序算法:冒泡排序、插入排序、选择排序、希尔排序 排序算法:归并排序、快速排序 排序算法:桶排序、计数排序、基数排序 排序算法:堆排序 十大排序算法小结 一、冒泡排序: 1、算法原理: 冒泡排序只会操作相邻的两个数据。每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系的要求。如果不满足就让它俩互换位置。一次冒泡会让至少一个元素移动到它应该在的位置,重复n...

张维鹏的博客 6477

【七大排序算法】插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序

所谓排序,就是把一堆杂乱的数据,排成升序或降序(递增/增减)。假设一组数据[1,2,9,5,5,6,8],进行升序排序后,两个5的相应位置不发生改变,即称为稳定的排序,否则就是不稳定排序。数据元素全部放在内存中进行排序。即将待排序的记录存储在外存中,排序时再把数据一部分一部分地调入内存进行排序,在排序过程中需要多次进行内存和外存之间地交换。

Original0的博客 3625

【Python排序算法】一文掌握十大排序算法,冒泡排序、插入排序、选择排序、归并排序、计数排序、基数排序、希尔排序和堆排序

一文掌握十大排序算法,冒泡排序、插入排序、选择排序、归并排序、计数排序、基数排序、布尔排序、桶排序和堆排序

qq_35831906的博客 2542

常见的五种排序,冒泡排序,选择排序,插入排序,并归排序,快速排序

冒泡排序 冒泡排序介绍: 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地跑过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小)那么它就会按照大到小的排序方式来。它必须要把算所有的元素重复地进行跑一遍,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 冒泡排序算法的原理如下: 1,比较相邻的元素。如果第一个比第二个大,就交换他们两个,如果不是相等的就跳过比下面的元素 ,这样依次的循环下去 直到所有的元素都比较完成才结束。 2,针对所有的元素重复以上的

无心 2623

【数据结构】排序合集(直接插入排序、希尔排序、冒泡排序、堆排序、选择排序、快速排序、归并排序、计数排序)

完希望这篇小小文章可以为你解答疑惑!若上述文章有什么错误,欢迎各位大佬及时指出,我们共同进步!

2401_85054434的博客 1485

数据结构伴内排序算法:直接排序、折半排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序、基数排序

希尔排序每趟并不产生有序区,在最后一趟排序结束前,所有元素并不一定归位了,但是在希尔排序每趟完成后数据越来越接近有序。的倍数的元素放在同一个组中,图 1.4是分为 d 的情况。:和直接插入排序一样,折半插入排序每趟产生的有序区并不一定是全局有序区。是采用顺序比较的方法。由于有序区的元素是有序的,可采用折半查找方法先在。中找到插入位置,再通过移动元素进行插入,这样的插入排序称为。每一个元素的比较和插入都在同组内部进行,对于元素。,重复上述的分组和排序,直到所取的增量。开始起,采用直接插入排序,直到元素。

m0_74311333的博客 2233

七大排序 ( 6000 字详解直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序)

6000字详解析,直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序

weixin_73232539的博客 2052
上一篇: 用java写一个简易的计算器界面
下一篇: 松雅旅馆的自动门——湖南大学程序设计作业
南懿烨曦
博客等级 码龄6年 108粉丝 35原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值