排序算法--冒泡排序(Java语言)

冒泡排序(Bubble Sort)是啥?

冒泡排序是一种简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。

通俗理解

简单的说,如果我们想将一个数组从小到大排列,我们可以这样做:
1.首先可以将数组的最大值移动到最后面。
2.再将次大值移动到倒数第二位。
3.以此类推,直到将所有数排列好。

那冒泡排序是怎么实现上述操作的呢?我们来看下算法描述

算法描述

假设我们有数组arr
1.令j为0,arr[j]和arr[j+1]比较,使这两个元素的较大值在排在后面,即若arr[j]>arr[j+1],两数交换位置,若arr[j]<arr[j+1],不换。

2.不管换与不换,j++。

3.此时的arr[j]和arr[j+1]再进行比较,重复上述操作直到j=arr.length-1(这是整个排序过程的第一轮排序,即将整个数组中的最大值移动到最后面,所以这一轮排序是在j=arr.length-2的时候停止)

4.第一轮结束后我们接着进行第二轮,即将次大值移动到数组的倒数第二个位置。那么这一轮结束的标志就是j=arr.length-3

5.接着进行第三轮,第四轮...直到第二小的数排好序(你想啊,我们将其他数都排好了,最后一个肯定就是最小值啦)所以我们一共要进行arr.length-1轮排序。

6.每一轮排序结束的标志是j=arr.length-1-i。

动图演示

 

代码实现

public class BubbleSort {
public static void main(String[] args) {int[] arr = new int[] { 2, 8, 7, 9, 4, 1, 5, 0 };bubbleSort(arr);
}public static void bubbleSort(int[] arr) {//控制多少轮for (int i = 1; i < arr.length; i++) {//控制每一轮的次数for (int j = 0; j <= arr.length -1 - i; j++) {if (arr[j] > arr[j + 1]) {int temp;temp = arr[j];arr[j] = arr[j + 1]; arr[j + 1] = temp;}}}System.out.println(Arrays.toString(arr));}
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Idea新建springboot项目遇到的问题及解决

1.更换阿里云 方法&#xff1a; 找到文件路径&#xff1a;Settings > Build,Execution,Deployment > Build Tools > Maven 如下图&#xff1a; 找到相应的settings文件 如果没有就新建一个同名文件&#xff0c;内容如下&#xff1a; <settings xmlns"h…

案例赏析 | 新疆喀什:“大型充电宝”扎根戈壁,让新能源供电更稳定

在喀什&#xff0c;你可以置身秘境&#xff0c;一睹帕米尔高原、乔戈里峰、“冰山之父”慕士塔格峰的壮丽&#xff1b;可以走进喀什古城&#xff0c;在街头巷尾、一砖一瓦间感受丝路风情&#xff1b;可以探访塔克拉玛干沙漠&#xff0c;开始一场关于冒险者的游戏&#xff1b;也…

基于深度学习的高精度绵羊检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度绵羊检测识别系统可用于日常生活中或野外来检测与定位绵羊目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的绵羊目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

html实现好看的多种风格导航菜单(附源码)

文章目录 1.设计来源1.1 顶部导航菜单1.1.1 界面风格1-一二级连体导航菜单1.1.2 界面风格2-二级导航下拉框1.1.3 界面风格3-系统开始风格1.1.4 界面风格4-购物类导航菜单1.1.5 界面风格5 - 带搜索扩展的导航条1.1.6 界面风格6-火热效果多级导航条 1.2 悬浮按钮菜单1.2.1 界面风…

OpenResty shared dict

cosocket 是各种 lua-resty-* 非阻塞库的基础 cosocket coroutine socket 需要 Lua 协程特性的支持&#xff0c;也需要 Nginx 事件机制的支持&#xff0c;两者结合在一起实现非阻塞网络 I/O。 遇到网络 I/O 时会交出控制权&#xff0c;把网络事件注册到 Nginx 监听列表中&a…

王道《计算机网络》思维导图汇总

第一章 1.1.1 概念与功能 1.1.2 组成与分类 1.1.3 标准化工作及相关组织 1.1.4 性能指标 速率 带宽 吞吐量 时延 时延带宽积 往返时延RTT 利用率 1.2.1 分层结构、协议、接口、服务 1.2.2 OSI参考模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 1.2.4 TCP/IP 参…

vue中实现div可编辑,并插入指定元素,样式

前言&#xff1a; vue中实现一个既可以编辑内容&#xff0c;有可以动态编辑内容插入一个带有样式的内容&#xff0c;改变默认内容后&#xff0c;这个样式消失的效果&#xff0c;这里来整理下调研与解决实现问题之路。 实现最终效果&#xff1a;图2为默认内容 1、可以光标点击任…

idea里发送简单邮件的模板

这是一个idea里发送简单邮件的模板&#xff0c;后续会更新在项目里如何进行运用。 带附件的暂时不演示。 这属于个小demo&#xff0c;后续还会抽出专门的properties进行存储对应的授权码邮箱等信息&#xff0c;也会封装一个发送邮件的方法&#xff0c;供其他的发送邮件业务调用…

asp.net MVC

文件目录 页面 HTML与Script的联系 HTML元素通过调用脚本中的function来触发前端的动作要进行的后端逻辑操作 Script中通过选择器$(“#str”)来改变前端HTML的显示数据 Script中有两种类型的函数模式 $(function(){ … }) &#xff1a;window.onload时调用。function btnRese…

火山引擎DataLeap数据质量解决方案和最佳实践(二):解决方案

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 DataLeap流批数据质量解决方案 产品功能架构 火山引擎DataLeap流批数据质量解决方案有 4 个大的功能&#xff1a; 离线数据质量监控&#xff1a;解决批和微批监控…

el-tree 展开指定层级 节点

示例&#xff1a;只展开一级节点 代码实现&#xff1a; element UI 文档 html代码 defaultExpandedArr 是重点 需要加node-key <el-tree:props"defaultProps":data"treeData":default-expanded-keys"defaultExpandedArr"node-key"id&q…

【Hadoop】 | 搭建HA之报错锦集

知识目录 一、写在前面✨二、Hadoop的active结点无法主备切换&#x1f525;三、Hadoop Web端无法上传文件&#x1f349;四、hdfs创建文件夹报错&#x1f36d;五、IDEA操作Hdfs无法初始化集群&#x1f525;六、Java无法连接Hdfs&#x1f36d;七、找不到Hadoop家目录&#x1f525…