【算法学习】冒泡排序

1. 冒泡排序

详情在下列注释里

package com.tool.tooladmin.algorithm;import com.tool.tooladmin.config.result.AjaxResult;
import com.tool.tooladmin.config.result.BaseController;
import org.springframework.web.bind.annotation.*;import java.math.BigDecimal;/*** 冒泡排序* 1.从列表的第一个元素开始,比较相邻的两个元素。* 2.如果第一个元素比第二个元素大,则交换它们的位置。* 3.移动到下一个元素,重复步骤 2,直到列表的末尾。* 4.重复上述步骤,直到整个列表没有任何需要交换的元素。* 实际上第一次就是把最大的元素放到最后面,第二次就是把第二大的元素放到倒数第二个位置,以此类推。* 冒泡排序的时间复杂度* 最佳情况:O(n)(当数组已经有序时,只需进行一次遍历)* 最坏情况:O(n^2)(当数组是逆序时,需要进行 n*(n-1)/2 次比较)* 平均情况:O(n^2)*/
@RestController
@RequestMapping("/sort")
public class BubbleSortController extends BaseController {@PostMapping("/bubbleSort")public AjaxResult bubbleSort(@RequestBody BigDecimal[] arr) {
//        获取开始时间long start = System.currentTimeMillis();int n = arr.length;boolean swapped;//总执行次数为数组长度,因为从0开始,所以总次数为n-1for (int i = 0; i < n - 1; i++) {swapped = false;//n-1-i是每次比较后,对应的最后一个元素为最大的,所以每次需要减少一次i的值for (int j = 0; j < n - 1 - i; j++) {if (arr[j].compareTo(arr[j + 1]) > 0) {// 交换 arr[j] 和 arr[j + 1]BigDecimal temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;swapped = true;}}// 如果没有发生交换,说明数组已经有序,提前退出if (!swapped) {break;}}// 获取结束时间long end = System.currentTimeMillis();// 计算时间差long time = end - start;// 返回结果return success(arr , time);}
}

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

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

相关文章

cefsharp79.1.360(Chromium 79.0.3945.130)支持H264视频播放-PDF预览 老版本回顾系列体验

一、关于此版本 版本:Cef 79.1.36/CefSharp 79.1.360/Chromium 79.0.3945.130/支持H264/支持PDF预览 支持PDF预览和H264推荐版本 63/79/84/88/100/111/125 运行环境需要 visual c++ 2015不支持xp/vista/2003/2008默认不支持h264(版权问题)支持打印预览 print preview已知问题…

网络资源模板--Android Studio 实现简易新闻App

目录 一、项目演示 二、项目测试环境 三、项目详情 四、完整的项目源码 一、项目演示 网络资源模板--基于Android studio 实现的简易新闻App 二、项目测试环境 三、项目详情 登录页 用户输入&#xff1a; 提供账号和密码输入框&#xff0c;用户可以输入登录信息。支持“记…

HiveOnSpark环境下,Spark 挂了问题排查思路

在 Hive on Spark 模式下&#xff0c;Hive 使用 Spark 作为其执行引擎运行查询。如果 Spark 挂了&#xff0c;分析和解决错误通常需要查看多个地方的日志和配置。以下是分析 Spark 挂掉问题的详细步骤和方法。 1. 检查 Hive 查询日志 首先&#xff0c;在 Hive 中执行的查询都会…

RestHighLevelClient操作es查询文档

目录 利用RestHighLevelClient客户端操作es查询文档 查询match_all dsl语句&#xff1a; ​编辑 java代码 小结 match字段全文检索查询 dsl语句 java代码 multi_match多字段全文检索查询 dsl语句 java代码 term精确查询 dsl语句 java代码 range范围查询 dsl语句 j…

基于SpringBoot的旅店管理系统的设计与实现源码+Vue前端(酒店、民宿、功能较多)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

Windows系统部署redis自启动服务【亲测可用】

文章目录 引言I redis以本地服务运行(Windows service)使用MSI安装包配置文件,配置端口和密码II redis服务以终端命令启动缺点运行redis-server并指定端口和密码III 知识扩展确认redis-server可用性Installing the Service引言 服务器是Windows系统,所以使用Windows不是re…

文献阅读:通过深度神经网络联合建模多个切片构建3D整体生物体空间图谱

文献介绍 文献题目&#xff1a; 通过深度神经网络联合建模多个切片构建3D整体生物体空间图谱 研究团队&#xff1a; 杨灿&#xff08;香港科技大学&#xff09;、吴若昊&#xff08;香港科技大学&#xff09; 发表时间&#xff1a; 2023-10-19 发表期刊&#xff1a; Nature M…

每日OJ题_牛客_[NOIP2001]装箱问题_01背包_C++_Java

目录 牛客_[NOIP2001]装箱问题_01背包 题目解析 C代码 Java代码 牛客_[NOIP2001]装箱问题_01背包 [NOIP2001]装箱问题 (nowcoder.com) 描述&#xff1a; 有一个箱子容量为V&#xff08;正整数&#xff0c;0 ≤ V ≤ 20000&#xff09;&#xff0c;同时有n个物品&…

Electron入门笔记

Electron入门笔记 ElectronElectron 是什么Electron流程模型创建第一个Electron项目配置自动重启主进程和渲染进程通信打包应用 Electron Electron 是什么 跨平台的桌面应用开发框架使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium和 Node.js Electro…

Print Settings Page 打印设置页面

“打印设置”页面提供了设计时工具&#xff0c;用于自定义控制视图打印版本外观的打印选项。此页面如下图所示。 “选项”和“行为”选项卡式页面提供对视图打印选项的设计时访问&#xff0c;这些选项可通过其 GridView.OptionsPrint 属性或卡片视图的 CardView.OptionsPrint 进…

linux证明变量扩展在路径名扩展之前执行

题目&#xff1a;怎么设计一组命令来证明变量扩展在路径名扩展之前执行。 为了证明变量扩展在路径名扩展之前执行&#xff0c;可以通过编写一个简单的 shell 脚本来观察这两个过程的顺序。我们可以使用以下步骤进行设计&#xff1a; 步骤 1&#xff1a;准备环境 在你选择的 …

基于vue框架的的点餐系统1o2te(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,商家,菜品分类,菜品信息 开题报告内容 基于Vue框架的点餐系统开题报告 一、研究背景与意义 随着移动互联网技术的飞速发展&#xff0c;餐饮行业也迎来了数字化转型的浪潮。传统的点餐方式&#xff0c;如纸质菜单和人工记录&…

大数据开发工程师的岗位技能要求及自我介绍参考(持续更新)

目录 岗位技能要求 一、编程语言 二、大数据框架 三、数据库知识 四、数据处理和 ETL 技能 五、数仓开发技能和经验要求 六、分布式系统和云计算 分布式系统原理 七、其他技能 自我介绍重点介绍方面 一、突出自己处理数据量级别大: 二、突出自己有实时数仓的经…

颐驰06持续交付,明日科技赋能出行生活

在全球智能出行领域&#xff0c;自动驾驶技术的发展一直是行业关注的焦点。不久前&#xff0c;特斯拉发布的自动驾驶出租车引发了全球关注&#xff0c;但由于缺乏具体的技术细节&#xff0c;导致投资者信心受挫&#xff0c;特斯拉股票一度下跌近10%。与此同时&#xff0c;中国车…

lua的使用

https://www.lua.org/ Lua 是一种轻量级、高效、可嵌入的脚本语言&#xff0c;常用于游戏开发、嵌入式系统和应用扩展。以下是 Lua 的一些常见使用场景和基础用法&#xff1a; 1. 嵌入脚本语言 Lua 设计为嵌入到应用程序中&#xff0c;用作配置和业务逻辑编写。通过其 C API&…

K230获取单摄像头的 3 个通道图像并显示在 HDMI 显示器上

本示例打开摄像头&#xff0c;获取 3 个通道的图像并显示在 HDMI 显示器上。通道 0 采集 1080P 图像&#xff0c;通道 1 和通道 2 采集 VGA 分辨率的图像并叠加在通道 0 的图像上。 # Camera 示例 import time import os import sysfrom media.sensor import * from media.dis…

基于深度学习的进化神经网络设计

基于深度学习的进化神经网络设计&#xff08;Evolutionary Neural Networks, ENNs&#xff09;结合了进化算法&#xff08;EA&#xff09;和神经网络&#xff08;NN&#xff09;的优点&#xff0c;用于自动化神经网络架构的设计和优化。通过模拟自然进化的选择、变异、交叉等过…

Thread类中run和start的区别

作用功能不同&#xff1a; run方法的作用是描述线程具体要执行的任务&#xff1b; start方法的作用是真正的去申请系统线程 运行结果不同&#xff1a; run方法是一个类中的普通方法&#xff0c;主动调用和调用普通方法一样&#xff0c;会顺序执行一次&#xff1b;start调用方…

CTF(四)

导言&#xff1a; 本文主要讲述在CTF竞赛中&#xff0c;web类题目file_include。 靶场链接&#xff1a;攻防世界 (xctf.org.cn) 一&#xff0c;观察页面。 可以看到一段php代码。从则段代码中我们可以知道&#xff1a; 1&#xff0c;使用include引入check.php文件&#xff…

Nodejs使用http模块创建Web服务器接收解析RFID读卡器刷卡数据

本示例使用设备&#xff1a; https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.1d292c1buHvw58&ftt&id22173428704 Javascript源码 //引用http模块创建web服务器&#xff0c;监听指定的端口获取以GET、POST、JSON等方式上传的数据&#xff0c;并回应驱动读卡…