Java 冒泡排序法

冒泡排序法是交换排序法的一种

思想:

/**
* 冒泡法排序
* 比较相邻的元素。如果第一个比第二个小,就交换他们两个。
* 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最小的数。
* 针对所有的元素重复以上的步骤,除了最后一个。
* 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

即对于数组中的每个位置都寻找相对最大的或者最小的

算法实现

package sort;public class MaoPao {/*** 冒泡法排序* 比较相邻的元素。如果第一个比第二个小,就交换他们两个。* 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最小的数。* 针对所有的元素重复以上的步骤,除了最后一个。* 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。** @param arr 需要排序的整型数组*            <p>*            <p>*            <p>*            即对于数组中的每个位置都寻找相对最大的或者最小的*/public static void maoPaoLeftMax(int[] arr) {//让左边是最大的值,右边是最小的for (int i = 0; i < arr.length - 1; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] < arr[j]) {//让左边最大int temp = arr[j];arr[j] = arr[i];arr[i] = temp;}}}}public static void maoPaoRightMax(int[] arr) {//让右边是最大的值,左边是最小的for (int i = 0; i < arr.length - 1; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] > arr[j]) {//让左边最大int temp = arr[j];arr[j] = arr[i];arr[i] = temp;}}}}public static void main(String[] args) {System.out.println("=======================");int[] arr = new int[]{1, 3, 5, 7, 9, 2, 4, 6, 8};maoPaoLeftMax(arr);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "     ");}maoPaoRightMax(arr);System.out.println("上面是左边最大,下面是右边最大 ");for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "     ");}}}

输出结果:

9     8     7     6     5     4     3     2     1     
上面是左边最大,下面是右边最大 
1     2     3     4     5     6     7     8     9  

注意事项:

第一个 for (int i =0 ;i< arr.length -1 ;i++) 一定是arr.length -1
——
第二个 for (int j=0 ; j< arr.length ; j++) 一定是arr.length

——
因为要保证第一个for有倒数第二个,而第二个for有最后一个

时间和空间复杂度

冒泡排序是一种用时间换空间的排序方法,n小时好
···
最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序,最差时间复杂度O(n2)只是表示其操作次数的数量级
····
最好的情况是数据本来就有序,复杂度为O(n)

复杂度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/351682.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

冒泡排序法定向冒泡排序法的Python实现

冒泡排序法 冒泡排序法&#xff1a;每轮对相邻的两者进行比较&#xff0c;若顺序不对&#xff0c;则进行位置互换&#xff0c;每轮都将使每轮的 最后一位是该轮的大数。 比如在数列&#xff1a;[71, 1, 14, 78, 75, 38, 10, 49, 40, 95] 第一轮交换&#xff1a;71>1 > […

Java:冒泡排序法

冒泡排序法是最基本的排序法之一&#xff0c;冒泡排序法的运行机制是通过循环遍历元素并调整相邻元素顺序来实现的一种简单排序方法。冒泡排序的实质是相邻两个元素比较&#xff0c;然后按照升序或降序调换位置。 下为降序冒泡排序的代码: public class Training {public sta…

基于Java的冒泡排序法

基本过程&#xff1a; 原始顺序是48&#xff0c; 52&#xff0c; -51 &#xff0c;0 &#xff0c;67 &#xff0c;23&#xff0c; -24。开始48和52比较&#xff0c;48<52&#xff0c;则顺序不变&#xff1b;52和-51比较&#xff0c;52>-51,则两者交换位置&#xff08;48…

冒泡排序法过程分析

冒泡排序法过程分析&#xff1a; 下面是代码。建议先自己尝试去实现一下看看&#xff0c;再来看我是如何实现的。 #include <stdio.h> main() { int a[100],i,j,t,n; scanf("%d",&n); //输入一个数n&#xff0c;表示接下来有n个数 for(i1;i<n;i)…

冒泡排序法全攻略

1 算法介绍 冒泡排序法又叫起泡法&#xff0c;在许多程序设计中&#xff0c;我们需要将一个数列进行排序&#xff0c;以方便统计&#xff0c;常见的排序方法有冒泡排序&#xff0c;二叉树排序&#xff0c;选择排序等等。而冒泡排序一直由于其简洁的思想方法和比较高的效率而倍…

js冒泡排序法

冒泡排序法 冒泡排序法其实也是一种最简单&#xff0c;最清晰明了的一种排序算法。主要的运行过程就是重复比较一个数组里面的所有元素&#xff0c;两两做比较&#xff0c;如果他们的顺序不对&#xff0c;则把他们交换位置&#xff0c;一直重复到没有再需要交换元素就结束循环…

冒泡排序法(C语言)

冒泡排序&#xff1a;相邻两个数两两比较&#xff0c;小的数向前移&#xff08;上浮&#xff09;&#xff0c;大的数向后移&#xff08;下沉&#xff09;&#xff0c;如同水中的泡泡上浮一般&#xff1b; 冒泡排序图示&#xff1a; 如果有N个数&#xff0c;则要跑N-1次比较&…

Word控件Spire.Doc 【其他】教程(6):从 Word 中提取 OLE 对象

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

力扣刷题笔记——动态规划

动态规划基础 简称DP&#xff0c;如果某⼀问题有很多重叠⼦问题&#xff0c;使⽤动态规划是最有效的。 动态规划中每⼀个状态⼀定是由上⼀个状态推导出来的 1. 确定dp 数组&#xff08; dp table &#xff09;以及下标的含义 2. 确定递推公式 3. dp 数组如何初始化 4. 确定遍…

【Java系列】MyBatis-Plus常见面试题

问题列表 Q1&#xff1a;MyBatis-Plus是什么&#xff1f;它有什么优点&#xff1f; MyBatis-Plus是MyBatis框架的一个扩展库&#xff0c;它提供了一系列方便的API和工具&#xff0c;可以简化常见的数据库操作。MyBatis-Plus的优点包括&#xff1a; 提高开发效率&#xff1a;My…

MQTT与EMQ

文章目录 1 MQTT协议与EMQ中间件1.1 物联网消息协议MQTT1.1.1 什么是MQTT1.1.2 MQTT相关概念1.1.3 消息服务质量QoS——信息的可靠投递1.1.3.1 QoS0——消息服务质量为0&#xff0c;消息发送至多一次1.1.3.2 QoS1——消息发送至少一次1.1.3.3 QoS2——消息发送仅一次1.1.3.4 不…

MTK平台的SWT异常的简单总结(2)——SWT原理和分析

&#xff08;1&#xff09;原理性 &#xff08;2&#xff09;SWT如何抓取Log 遇到SWT问题详细可参考MTK提供的FAQ&#xff1a;SWT机制介绍。 获取Ap Log的路径&#xff1a;/sdcard/debuglogger/mobilelog/APLog_XXXXX 获取db的路径&#xff1a;/data/aee_exp 如果db没有打包…

HBase统计表行数(RowCount)的四种方法

背景&#xff1a; 对于其他数据存储系统来说&#xff0c;统计表的行数是再基本不过的操作了&#xff0c;一般实现都非常简单&#xff1b;但对于HBase这种key-value存储结构的列式数据库&#xff0c;统计 RowCount 的方法却有好几种不同的花样&#xff0c;并且执行效率差别巨大&…

2023年测试人前景归途?我主攻自动化测试拿到了25k的offer...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…

sqlserver 中 @@rowcount的简单用法

返回受上一语句影响的行数。如果行数大于 20 亿&#xff0c;请使用 ROWCOUNT_BIG。 语法 ROWCOUNT 返回类型 int 注释 Transact-SQL 语句可以通过下列方式设置 ROWCOUNT 的值&#xff1a; 将 ROWCOUNT 设置为 受影响或被读取的行的数目。可以将行发送到客户端&#xff0c;…

SQL中row_number函数用法

row_number函数用法 1、函数讲解2、LeetCode实战 1、函数讲解 语法&#xff1a;ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)简单的说&#xff0c;row_number()从1开始&#xff0c;为每条分组记录返回一个数字&#xff0c;举例&#xff1a; ROW_NUMBER() OVER(OR…

Hbase进行RowCount统计

对于Table内RowKey个数的统计&#xff0c;一直是HBase系统面临的一项重要工作&#xff0c;目前有三种执行该操作的方式。 测试环境&#xff1a; Apache版的 hadoop-2.6.0 &#xff08;cdh版的hadoop-2.6.0-cdh5.5.2也可以&#xff09; Apache版的 hbase-1.0.0 &#xff08;一…

【完整版】2023二级建造师《建筑实务》真题答案解析(2天考3科)

2023二级建造师考试将在6月3日、4日举行&#xff0c;2023二建《市政实务》考试时间&#xff08;2天考3科&#xff09;&#xff1a;6月4日 9:00-12:00&#xff0c; 考后甘建二将及时发布2023年二建市政实务真题及答案解析&#xff0c;敬请关注 2天考3科地区&#xff1a;四川、山…

DMBOK知识梳理for CDGA/CDGP——第三章数据治理

关 注gzh“大数据食铁兽” 回复“知识点”获取《DMBOK知识梳理for CDGA/CDGP》常考知识点&#xff08;第三章数据治理&#xff09; 第三章 数据治理 第三章在是CDGA|CDGP考试的重点考核章节之一&#xff0c;知识点比较密集&#xff0c;本章重点为语境关系图及数据治理概念…

LiangGaRy-学习笔记-Day19

1、回顾知识 1.1、文件系统说明 xfs与ext4文件系统 CentOS7以上&#xff1a;默认的就是XFS文件系统 xfs 使用的就是restore、dump等工具 CentOS6默认的就是ext4文件系统 extundelete工具就是用于ext4系统 1.2、回顾Linux文件系统 Linux文件系统是由三个部分组成 inode文…