21天经典算法之冒泡排序


活动地址:CSDN21天学习挑战赛

专栏前言:

本专栏主要是算法训练,目的很简单。就是为了进厂
最近官方在组织 21 天挑战赛,趁此机会我也更新一下经典算法的文章
如果想一起“狂”或者交流,欢迎来私聊
还不快趁着这个机会来提升自己💪

21天经典算法之冒泡排序

    • 👉排序算法介绍
    • 👉冒泡排序
      • 原理
      • 代码实现
      • 复杂度分析
      • 稳定性
    • 👉算法实践
      • 冒泡排序
    • 👉课后习题

👉排序算法介绍

排序算法是通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。最终序列按照一定的规律进行呈现。

在排序算法中,稳定性和效率是我们经常要考虑的问题。

稳定性:稳定是指当两个相同的元素同时出现于某个序列之中,则经过一定的排序算法之后,两者在排序前后的相对位置不发生变化。

复杂度分析:
(1)时间复杂度:即从序列的初始状态到经过排序算法的变换移位等操作变到最终排序好的结果状态的过程所花费的时间度量。
(2)空间复杂度:就是从序列的初始状态经过排序移位变换的过程一直到最终的状态所花费的空间开销。

常见的排序算法分为以下几种:
在这里插入图片描述

👉冒泡排序

原理

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

就像一个泡泡小的泡泡就会不断地上升或者下降,它的名字也就由此而来(冒泡排序)

代码实现

for (int i = 0; i < nums.length; i++) {for (int j = 0; j < nums.length - 1; j++) {if(nums[j] > nums[j+1]){int tmp = 0;tmp = nums[j];nums[j] = nums[j+1];nums[j+1] = tmp;}}
}

优化冒泡

for (int i = 0; i < nums.length - 1; i++) {boolean flag = false;for (int j = 0; j < nums.length - 1 - i; j++) {if(nums[j] > nums[j + 1]){int tmp = 0;tmp = nums[j];nums[j] = nums[j+1];nums[j+1] = tmp;flag = true;}}if(flag == false){return;}
}

复杂度分析

时间复杂度

  • 最好的情况: O ( n ) O(n) O(n)。如果元素排列是正序的,那么只需要循环比较一次,并且移动0次即可。冒泡排序最好的时间复杂度为 O ( n ) O(n) O(n)
  • 最坏的情况: O ( n 2 ) O(n^2) O(n2)。如果元素排序反向有序,那么需要 n − 1 n-1 n1次循环,并且每次排序都需要 n − i n-i ni次的比较。冒泡排序的最坏时间复杂度为 O ( n 2 ) O(n^2) O(n2)
  • 平均复杂度: O ( n 2 ) O(n^2) O(n2)

空间复杂度 O ( 1 ) O(1) O(1)。冒泡排序的辅助变量空间仅仅是一个临时变量,并且不会随着排序规模的扩大而进行改变,所以空间复杂度为O(1)

稳定性

冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,是不会再交换的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法

👉示例:

在这里插入图片描述

👉算法实践

💭
算法的整体思想已经在上面讲述了,下面直接使用一个例子来试试水。

冒泡排序

题目描述:

给你一个整数数组 nums,请你将该数组升序排列。

示例 1:

输入:nums = [5,2,3,1]
输出:[1,2,3,5]

示例 2:

输入:nums = [5,1,1,2,0,0]
输出:[0,0,1,1,2,5]

提示:

1 <= nums.length <= 5 * 104
-5 * 104 <= nums[i] <= 5 * 104

class Solution {public int[] sortArray(int[] nums) {for (int i = 0; i < nums.length - 1; i++) {boolean flag = false;for (int j = 0; j < nums.length - 1 - i; j++) {if(nums[j] > nums[j + 1]){int tmp = 0;tmp = nums[j];nums[j] = nums[j+1];nums[j+1] = tmp;flag = true;}}if(flag == false){return nums;}}return nums;}
}

冒泡在此题目中会超时,但是也可以使用这种方式。

👉课后习题

如果你觉得掌握了,那么赶快来实践一下吧

序号题目链接难度评级
1912. 排序数组中等
275. 颜色分类中等

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

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

相关文章

鸡尾酒排序算法详解

一、什么是鸡尾酒排序 1.概念 鸡尾酒排序算法又叫快乐小时排序&#xff0c;它基于冒泡排序算法做了一些优化。冒泡排序算法每一轮都是从左到右进行元素比较&#xff0c;进行单向的位置交换&#xff0c;鸡尾酒排序算法则是双向的元素比较和交换。 2.算法原理 这是一个无序数…

【1072】鸡尾酒疗法

1072&#xff1a;鸡尾酒疗法 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 62913 通过数: 27350 【题目描述】 鸡尾酒疗法&#xff0c;指“高效抗逆转录病毒治疗”。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾…

把psd自动生成html,根据psd文件生成html

我是新手&#xff0c;怎样在ps中把psd文件变成html文件呢&#xff1f;我知道要用切片&#xff0c;但是具体步骤怎么做&#xff0c;还有是不是不同的ps版本有差异 不同的ps版本是没有什么差异的&#xff0c;主要用到的就是工具里面的切片&#xff0c;用切片切好图后&#xff0c;…

为什么不要相信AI机器人提供的健康信息?

自从OpenAI、微软和谷歌推出了AI聊天机器人&#xff0c;许多人开始尝试一种新的互联网搜索方式&#xff1a;与一个模型进行对话&#xff0c;而它从整个网络上学到的知识。 专家表示&#xff0c;鉴于之前我们倾向于通过搜索引擎查询健康问题&#xff0c;我们也不可避免地会向Ch…

OpenAI 用于辅助治疗的 GPT-4:AI 如何彻底改变心理健康护理

人工智能&#xff08;AI&#xff09;改变了我们生活的方方面面&#xff0c;从娱乐和教育到医疗保健。人工智能最有前途的应用之一是在心理健康领域&#xff0c;它可以帮助数百万患有抑郁症、焦虑症、创伤后应激障碍 &#xff08;PTSD&#xff09; 和物质使用障碍等各种疾病的人…

大模型惨遭人类大范围攻击!国内各领域专家组团投毒,GPT-4也Hold不住

包括GPT-4在内等多个大模型惨遭人类攻击&#xff01;还是大范围、多边形那种。 而且这个军团被爆个个来头不小。 包括社会学家李银河、心理学家李松蔚、中科院计算研究所王元卓等&#xff0c;覆盖环境、心理、法理、心理、教育、大数据、无障碍等多个领域。 他们专挑刁钻、陷…

苹果AI哪去了?前员工揭秘Siri何以走向没落:团队内耗、技术判断太谨慎

明敏 发自 凹非寺量子位 | 公众号 QbitAI 苹果为何会在最新一轮ChatGPT趋势中“静悄悄”&#xff1f; 答案更进一步浮出水面。 内部团队混乱、决策缓慢、代码笨重&#xff0c;都成为了拖累苹果AI更快前进的原因。 最直接的体现&#xff0c;可以来看Siri。 这大概是大部分普通人…

新规拉开中国生成式AI“百团大战”序幕?

AI将走向何方&#xff1f; ChatGPT在全球范围掀起的AI热潮正在引发越来越多的讨论&#xff0c;AI该如何管理&#xff1f;AI该如何发展&#xff1f;一系列问题都成为人们热议的焦点。此前&#xff0c;马斯克等海外名人就在网络上呼吁OpenAI暂停ChatGPT的模型训练和迭代&#xf…

苹果AI哪去了?前员工揭秘Siri何以走向没落:团队内耗、技术判断太谨慎!

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年3月份热门报告合集 万字干货&#xff1a;ChatGPT的工作原理 2023年创业&#xff08;有创业想法&#xff09;必读手册 ChatGPT等让你效率倍增的22个AI工具 ChatGPT调研…

Mac下安装Redis 4.0(服务器端)

系统环境: CentOS 7.4 Redis版本: 4.0 这里采用终端下载解析安装: 1.1 进入/usr/local/目录 cd /usr/local/ 1.2 下载稳定版 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 1.3 解压: tar -zxvf redis-4.0.10.tar.gz 1.4 进入解压后的文件中 cd redis-4.0.10 1.…

Mac下 Gradle4.0 详细安装攻略

macaca更新到2.0.0以上&#xff0c; 安卓需要使用gradle来构建app包&#xff0c;具体见Macaca 基于Python自动化测试框架搭建详解 ——Android、IOS搭建步骤&#xff0c;所以有了以下这篇文章。安装具体步骤如下&#xff1a; 
 • 下载最新的gradle的包&#xff0c;地址为&a…

mdserver(mac版) 4.0.1.0

mdserver(mac版) 4.0.1.0 Mac上高度可定制的PHP开发环境,集成必要的扩展,方便使用。 (pkg安装方式),安装方便,是你Mac上的PHP开发利器。 支持80端口。OpenResty(1.15.8.3)支持Lua开发。Redis(6.2.5),MongoDB(5.0.0),Memcached(1.6.10)。php-fpm以sock文件方式管理。多php进程…

Portraiture4.0最新免费磨皮美白滤镜修图插件

Portraiture这款老牌的一键磨皮修图插件终于更新啦&#xff01;最近官方推出了Portraiture 4.0.3版本&#xff01;新版本光影处理更强大&#xff0c;支持PS和LR软件&#xff01;&#xff01;最新版Portraiture 4.0.3插件滤镜下载安装包一PS人像精修磨皮美化修图神器&#xff0c…

pytorch gpu版本安装

正确的安装顺序 完蛋的&#xff0c;我写到现在才发现&#xff0c;由于我对于要安装的东西一知半解&#xff0c;导致我开始就被误导了&#xff0c;我首先查看了自己的cuda版本号&#xff0c;然后去安装pytorch&#xff0c;后来发现官网上pytorch都到11.6了&#xff0c;我才只有1…

【代码随想录day15】110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和

110.平衡二叉树 问题 题目链接&#xff1a;https://leetcode.cn/problems/balanced-binary-tree/ 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树。 本题中&#xff0c;一棵高度平衡二叉树定义为&#xff1a; 一个二叉树每个节点 的左右两个子树的高度差的绝对值…

SpringBoot自动装配串讲

目录 前言一. 基础概念1-1. Spring1-2. SpringBoot 二. 自动装配概览2-1. 效果&#xff08;目的&#xff09;2-2. 猜想2-3. SpringBoot的实现方案2-4. 对比及分析2-4-1. starter里为什么没有pom文件2-4-2. 配置类为什么没写在starter里 三. 自动装配细节3-1. 流程图3-2. 各部分…

告别抠图!海量免抠PNG,任你选

无论处理图片还是做PPT&#xff0c;经常会用到透明背景的图片素材&#xff0c;往往这种时候就需要进行抠图加 工。对PS图技术不佳的小伙伴而言&#xff0c;要抠出一张完美的图片并非易事。但也不是难事&#xff0c;只要你 有免抠PNG素材网&#xff08;搜图114 www.sotu114.co…

自己用ps抠图标

大家进入项目阶段已经有差不多一个月了&#xff1b;从简单数据库分析到慢慢的调试页面&#xff1b;再到 灵活的进行增删查改&#xff1b;相信在这一个月里大家的代码技术都有了一定的提高&#xff1b;相信对于以前学的现在是更加熟练了。对于不会的&#xff0c;可以通过网上查找…

不会PS怎么抠图换背景?赶紧收藏这3个好用的一键抠图神器

在现代社交媒体的世界里&#xff0c;给一张图片抠图换背景已经成为了互联网上很普遍的需求&#xff0c;比如有些朋友可能需要在社交媒体上分享自己的照片或制作一些创意性的设计作品&#xff0c;抠图换背景就可以帮助把图片创造出更好的视觉效果。一提到抠图去除背景&#xff0…

抠图软件哪个好用?这些软件你了解吗?

我们在抠取图片中的元素时&#xff0c;偶尔需要将图片中的人物抠出来。比如通过抠人像的方式&#xff0c;给证件照更换背景&#xff1b;或者制作搞怪照片&#xff0c;玩法多样。不过我们需要选择一款适合自己的人像抠图软件&#xff0c;所以人像抠图软件哪个好&#xff1f;快往…