【算法集训】基础算法:基础排序 - 冒泡排序

一、基本理解

贴上图解,更容易理解代码:https://visualgo.net/zh/sorting
冒泡排序(Bubble Sort)又称为泡式排序,是一种简单的排序算法。

核心思想:
它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就像水中的气泡会冒起来一样。

二、题目练习

1046. 最后一块石头的重量

// 冒泡排序
void BubbleSort(int * n, int size) {// 从右往左先从最大的开始确定,所以从最后一个开始for(int i = size - 1; i > 0; --i) {for(int j = 0; j < i; ++j) {if(n[j] > n[j + 1]) {int tmp = n[j];n[j] = n[j + 1];n[j + 1] = tmp;}}}
}int lastStoneWeight(int* stones, int stonesSize) {while(stonesSize > 1) {BubbleSort(stones, stonesSize);int x = stones[stonesSize - 1];int y = stones[stonesSize - 2];// 题目给的两种粉碎条件if(x == y) {stonesSize -= 2;}else {int z = x - y;stones[stonesSize - 2] = z;stonesSize -= 1;}}// 是否存在石头return stonesSize == 0 ? 0 : stones[0];
}

2148. 元素计数

void BubbleSort(int * n, int size) {for(int i = size - 1; i > 0; --i) {for(int j = 0; j < i; ++j) {if(n[j] > n[j + 1]) {int tmp = n[j];n[j] = n[j + 1];n[j + 1] = tmp;}}}
}int countElements(int* nums, int numsSize) {BubbleSort(nums, numsSize);int ans = 0;for(int i = 1; i < numsSize - 1; ++i) {if(nums[i] == nums[0] || nums[i] == nums[numsSize - 1]) {continue;}ans ++;}return ans;
}

88. 合并两个有序数组

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {for(int i = 0; i < n; ++i) {nums1[m + i] = nums2[i];}for(int i = 0; i < nums1Size - 1; ++i) {for(int j = 0; j < nums1Size - 1 - i; ++j) {if(nums1[j] > nums1[j + 1]) {int t = nums1[j];nums1[j] = nums1[j + 1];nums1[j + 1] = t;}}}
}

1464. 数组中两元素的最大乘积

int maxProduct(int* nums, int numsSize) {for(int i = 0; i < numsSize - 1; ++i) {for(int j = 0; j < numsSize - 1 - i; ++j) {if(nums[j] > nums[j + 1]) {int temp = nums[j];nums[j] = nums[j + 1];nums[j + 1] = temp;}}}return (nums[numsSize - 1] - 1) * (nums[numsSize - 2] - 1);
}

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

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

相关文章

性能比较:in和exists

当在Hive SQL中使用NOT IN和NOT EXISTS时&#xff0c;性能差异主要取决于底层数据的组织方式、数据量大小、索引的使用情况以及具体查询的复杂程度。下面是对这两种方法的性能分析&#xff1a; 1. NOT IN&#xff1a;- 工作原理&#xff1a;NOT IN子查询会逐个比较主查询中的值…

化肥工业5G智能制造工厂数字孪生可视化平台,推进化肥行业数字化转型

化肥工业5G智能制造工厂数字孪生可视化平台&#xff0c;推进化肥行业数字化转型。随着科技的不断发展&#xff0c;数字化转型已经成为各行各业发展的必然趋势。在化肥工业领域&#xff0c;5G智能制造工厂数字孪生可视化平台的应用正在逐渐普及&#xff0c;为行业数字化转型提供…

Java 循环结构 - while ,do…while 及 for,

目录 Java中有三种主要的循环结构&#xff1a; while 循环 实例 do…while 循环 实例 for循环 实例 三种循环之间的区别 增强 for 循环 实例 break 关键字 语法 实例 continue 关键字 语法 实例 顺序结构的程序语句只能被执行一次。 如果您想要同样的操作执行…

租用云服务器租时要注意的问题有哪些?

随着云计算的不断发展&#xff0c;对云计算服务器的需求也越来越大。 那么&#xff0c;我们应该如何以正确的态度和方法来选择云服务器呢&#xff1f; 租用云服务器需要注意哪些问题&#xff1f; 1.了解您需要的云服务类型 了解您的云计算需求将使您了解您正在寻求的服务类型…

web运行时安全

1.输入验证 对传递的数据的格式、长度、类型&#xff08;前端和后端都要&#xff09;进行校验。 对黑白名单校验&#xff1a;比如前端传递了一个用户名&#xff0c;可以搜索该用户是否在白名单或者黑名单列表。 针对黑名单校验&#xff0c;比如&#xff1a; // 手机号验证…

让两个电脑通信的方法(TCP连接,UDP连接,C/S架构)

目录 TCP-面向连接UDP-面向无连接C/S架构服务器和客户端的工作过程C/S架构例子 让两个电脑通信的方法是 在C/S的基础上&#xff0c;采用TCP和UDP的方式连接 TCP-面向连接 UDP-面向无连接 C/S架构 服务器和客户端的工作过程 C/S架构例子 服务器与客户端通信的过程类似公司与客户…

微信小程序云开发教程——墨刀原型工具入门(添加交互事件)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

殿堂级Flink源码极精课程预售

一、为什么我们要读源码? 1、让个人技术快速成长: 优秀的开源框架,底层的源码设计思想也非常优秀,同时还有含有大量的设计模式和并发编程技术&#xff0c;优秀的解决方案,熟读源码对猿们技术提升有很大帮助 2、新技术学习能力: Java开源码框架的源码熟读后&#xff0c;若出现…

第一篇:参考资料地址

javaGuide JavaGuide&#xff08;Java学习&面试指南&#xff09; | JavaGuide 清华学生总结的 小林coding labuladong labuladong 的算法笔记 | labuladong 的算法笔记 【华仔说技术】kafka的系列文章 https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg3MTcxMDgxNA…

【Datawhale组队学习:Sora原理与技术实战】Sora技术原理

Sora能力边界探索 最大支持60秒高清视频生成&#xff0c;以及基于已有短视频的前后扩展&#xff0c;同时保持人物/场景的高度一致性如奶茶般丝滑过渡的视频融合能力同一场景的多角度/镜头的生成能力具有动态摄像机运动的视频。随着摄像机的移动和旋转&#xff0c;人和其 他场景…

x-pack的破解方式和免费jar包!!可直接用!!

原理介绍 我们平时为es安装x-pack组件&#xff0c;用elasticsearch-plugin install x-pack &#xff0c;安装成功后。 1.cd $es目录/pulgins/x-pack 里面有一个x-pack-5.6.2.jar &#xff0c;将jar包反编译&#xff0c;然后将里面的licence的程序改下。再编译成jar包。 2…

通过笔记本桥接打印机组成网络打印机其它电脑与之相连各种问题汇总

根据描述需要一台低配闲置笔记本&#xff08;有无线网卡&#xff09;&#xff0c;一台普通台式打印机&#xff08;不带WIFI&#xff09;就可以组成网络打印机&#xff0c;能省1000块不&#xff1f; 1. 让笔记本安装驱动使其可以打印。 2. 让笔记本上的打印机共享&#xff0c;…

解决 MacOS Sonoma 14 系统下修改用户名无法进入系统的历史Bug

苹果系统祖传Bug概述 在MacOS中如果在系统偏好设置/用户和群组中尝试修改用户名或用户ID&#xff0c;当且仅当只有一个管理员账号的时候重启&#xff0c;就可能面临到无法进入操作系统&#xff0c;即使出现了登录框&#xff0c;但是一直是 loading状态在这个期间&#xff0c;你…

javaScript 深浅拷贝

javaScript深浅拷贝 浅拷贝 自己创建一个新的对象&#xff0c;来接受你要重新复制或引用的对象值。如果对象属性是基本的数据类型&#xff0c;复制的就是基本类型的值给新对象&#xff0c;但如果属性是引用数据类型&#xff0c;复制的就是内存中的地址&#xff0c;如果其中一个…

Python 编程中的迭代器、生成器和装饰器探究【第110篇—迭代器】

Python 编程中的迭代器、生成器和装饰器探究 在Python编程中&#xff0c;迭代器&#xff08;Iterators&#xff09;、生成器&#xff08;Generators&#xff09;和装饰器&#xff08;Decorators&#xff09;是三个强大的概念&#xff0c;它们为代码的可读性、效率和灵活性提供…

PaddleOCR的部署教程(实操环境安装、数据集制作、实际应用案例)

文章目录 前言 PaddleOCR简介 一、PaddleOCR环境搭建 因为我之前安装过cuda和cudnn&#xff0c;查看cuda的版本根据你版本安装合适的paddlepaddle版本&#xff08;之前没有安装过cuda的可以看我这篇文章Ubuntu20.04配置深度学习环境yolov5最简流程&#xff09; 1.创建一个…

【C++从0到王者】第四十八站:最短路径

文章目录 一、最短路径二、单源最短路径 -- Dijkstra算法1.单源最短路径问题2.算法思想3.代码实现4.负权值带来的问题 三、单源最短路径 -- Bellman-Ford算法1.算法思想2.算法实现3.SPFA优化4.负权回路 四、多源最短路径 -- Floyd-Warshall算法1.算法思想2.算法实现 一、最短路…

antd vue 日期控件的使用(选年份)

Ant Design Vue-------DatePicker 今天就讲讲Ant Design Vue下的控件----DatePicker 日期选择框 结合项目中的需求&#xff0c;先讲一下选择年份如何使用&#xff0c;需求&#xff1a; &#xff08;1&#xff09;将库中存的年份读出到DatePicker控件里面&#xff1b; &…

Windows 10上安装Docker

在Windows 10上安装Docker需要使用Docker Desktop for Windows&#xff0c;这是一个完全包含Docker工具和Docker Engine的应用程序&#xff0c;让你可以在Windows环境中运行容器化应用程序。以下是安装Docker Desktop for Windows的步骤&#xff1a; 系统要求检查&#xff1a; …

推荐收藏!字节AI Lab-NLP算法(含大模型)面经总结!

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂同学、参加社招和校招面试的同学&#xff0c;针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何备战、面试常考点分享等热门话题进行了深入的讨论。 今天整理…