面试官:请介绍下冒泡排序算法

冒泡排序算法及其优化 冒泡排序算是排序算法里面的一种较为简单的算法,也是我接触的第一种排序算法,有升序与降序之分,如果面试的时候面试官问道这个题目,一定要问清楚是升序还是降序,这样会给你加分。 下面,我以升序来讲一下它的运作。 1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 阅读详情

前言

十大排序算法可以说是每个程序员都必须得掌握的了,也是面试中最常考察的知识点之一。

这十大排序算法包括:选择排序、插入排序、冒泡排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序。

今天主要讲解冒泡排序,其他算法后续更新。

术语铺垫

有些人可能不知道什么是稳定排序、原地排序、时间复杂度、空间复杂度,我这里先简单解释一下:

1、稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。

2、非稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。

3、原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。

4、非原地排序:需要利用额外的数组来辅助排序。

5、时间复杂度:一个算法执行所消耗的时间。

6、空间复杂度:运行完一个算法所需的内存大小。

正文

冒泡排序定义为:在一个数组中,把第一个元素与第二个元素比较,如果第一个比第二个大,则交换他们的位置。接着继续比较第二个与第三个元素,如果第二个比第三个大,则交换他们的位置....

我们对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样一趟比较交换下来之后,排在最右的元素就会是最大的数。

除去最右的元素,我们对剩余的元素做同样的工作,如此重复下去,直到排序完成。

读完上面的话,可能很多依然比较疑惑。

我们把内容简化,简化为把物体大小按照从小到到大的顺序进行排列:

起始时,左下标指向第一个圆,右下标指向第二个圆,然后比较

面试官:请介绍下冒泡排序算法

然后左右下标同时向右移动,再次进行比较。

面试官:请介绍下冒泡排序算法

这样一来,每次比较完,右下标指向的圆就是已经比较过的圆中的最大面积的。

面试官:请介绍下冒泡排序算法

按照上面逻辑,这一趟下来所有圆中最大的就跑到最右边了。

面试官:请介绍下冒泡排序算法

这是第一趟排序,经过这趟排序之后,最大的就在最右边了,也就是排好序了,那么接下来就从剩下的三个圆中选最大的了,规则就和上面的一样了。

面试官:请介绍下冒泡排序算法

那么:

如果有 N 个石子,称从左到右找最大为一趟,那么要排好序需要多少趟?

答案是需要N-1次,因为如果因为N-1个数都排好了,那么最后一个数也就不用排了。

面试官:请介绍下冒泡排序算法

逻辑分析完了,那么代码实现为:

面试官:请介绍下冒泡排序算法

冒泡排序算法的所有内容

以上。

NLP自然语言处理:神经网络语言模型(NNLM) 目录 一、传统语言模型 1.1 稀疏性 1.2泛化能力差 二、神经网络语言模型 2.1 前馈神经网络模型(FFLM) 2.2 循环神经网络模型(RNNLM) 2.2.1循环神经网络模型示例 2.2.2RNN语言模型训练过程 2.2.3RNN语言模型反向传播 2.2.4语言模型评估 语言模型的构建目的是为了对语言中的各要素的分布进行估计,具有较长的研究历史和广泛... 阅读详情

相关推荐

Windows Server 2012 R2虚拟机安装全攻略:从镜像选择到网络配置一步到位

本文提供Windows Server 2012 R2虚拟机安装全攻略,涵盖从镜像选择到网络配置的完整流程。详细讲解在Oracle VM VirtualBox中的安装步骤、TCP/IP网络设置、系统优化及常见问题解决方案,帮助用户快速搭建可立即投入使用的服务器环境。特别适合IT初学者和系统管理员学习传统服务器应用的部署与配置。

weixin_28363123的博客 541

面试之冒泡排序

冒泡排序

weixin_44518506的博客 289

手把手教你用VSCode+SDL在Ubuntu上跑LVGL8.2模拟器(附插件清单)

本文详细介绍了在Ubuntu系统上使用VSCode和SDL库搭建LVGL8.2模拟器环境的完整流程,特别适合嵌入式开发者(如全志F1C100s平台)进行UI设计验证。从环境配置、项目编译到VSCode深度集成,提供了实用技巧和常见问题解决方案,帮助开发者实现'先模拟后真机'的高效开发模式。

weixin_33737134的博客 358

冒泡算法(面试题)

冒泡算法(面试题)

m0_71814235的博客 482

如何降低 Claude Code 封号风险:实用指南

本文针对 Claude Code 用户频繁遭遇账号封禁的问题,提供了一套经过实战验证的解决方案。通过分析封号的根本原因——共享VPN导致的IP异常标记,文章详细介绍了如何通过"独立服务器+中转服务+环境配置"三步走策略,显著降低封号风险。

goodparty的专栏 2146

halcon3D 点云拟合球体

halon3D 点云拟合球面

weixin_43213429的博客 1641

排序算法(1)------冒泡排序

冒泡排序是非常容易理解和实现,以从小到大排序举例:设数组长度为N。 1. 比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。 2. 这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。 3. N=N-1,如果N不为0就重复前面二步,否则排序完成。 冒泡排序1 //冒泡1 public void bubbl...

面向搜素引擎编程 347

共封装光学(CPO):下一代互联革命

Nvidia:产品:Quantum-X Q3450(115.2T,144×800G,2025H2上市)、Spectrum 6800(409.6T,512×800G,2026H2上市);技术路线:TSMC COUPE封装、MRM调制器、光栅耦合、外部激光源(Lumentum/Ayar Labs供应);战略定位:以横向扩展CPO验证供应链,最终聚焦纵向扩展场景(Feynman架构)。

存储随笔 4977

面试官:说说你对冒泡排序的理解?如何实现,百度面试后多久发offer

我还通过一些渠道整理了一些大厂真实面试主要有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合,附带超详细答案,希望能帮助到大家。还有专门针对JVM、SPringBoot、SpringCloud、数据库、Linux、缓存、消息中间件、源码等相关面试题。一个人可以走的很快,但一群人才能走的更远。

2401_84103216的博客 850

VPS环境搭建及配置

VPS(Virtual Private Server)是一种虚拟化技术,可以将一台物理服务器分成多个虚拟服务器,每个虚拟服务器都有独立的操作系统和资源,相互之间互不影响。VPS可以提供类似于独立服务器的功能,但价格更便宜,适合中小企业和个人用户使用。VPS可以用于网站托管、应用程序部署、游戏服务器、数据备份等各种场景。

YJ_12340的博客 1万+

Codesys软运动控制进阶:用SMC_FreeEncoder为ECAT轴搭建一个“虚拟手轮”调试工具

本文详细介绍了如何利用Codesys的SMC_FreeEncoder功能为ECAT轴搭建虚拟手轮调试工具,解决自动化设备开发中的硬件依赖问题。通过软件模拟手轮脉冲信号,实现无硬件依赖的运动控制逻辑验证,显著提升调试效率。适用于汇川AM400等PLC平台,特别适合机械安装滞后或伺服驱动器故障时的调试场景。

weixin_33737774的博客 482

面试中常考的排序算法(冒泡排序、选择排序、插入排序、快速排序...)

排序算法的几个重要知识点: 1、时间复杂度:一个算法执行所消耗的时间。 2、空间复杂度:运行完一个算法所需的内存大小。 3、稳定/非稳定排序:针对排序算法,我们还有一个衡量指标是稳定性。如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序。如果a在b之后,则为非稳定排序。 4、原/非原地排序:原地排序就是指在排序过程中不申请多余的存储空间,只利用原来存储待排数据的存储空间进行比较和交换的数据排序。即原地排序算法是指空间复杂度是O(1)的排序算法。其中冒泡排.

Android系统优化 3981

uniapp 全局弹窗

功能详解1.有的组件需要全局调用,不想要在一个页面里面一个个引入,现在就需要写入到全局中,直接全局触发。2.通过 $rechargePop就能全局触发 充值的弹窗实现步骤一、先把组件封装好,如 rechargePop组件位置 components/RechargePop/index.vue ,就定义一个methods open方法就可以 二、在同级别路径下定义一个 index.js 三、引入到main.js 四、全局调用this.$rechargePop(); 就能弹出那个弹窗

weixin_42066070的博客 657

面试官:小伙子,你给我简单介绍下排序算法吧

常见排序算法,冒泡排序,插入排序,归并排序,快速排序,三路快排,堆排序,桶排序

清风~的博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

假如面试官请写一个冒泡排序

在编程算法的世界里,冒泡排序是一种经典且基础的排序算法。它虽然简单,但却蕴含着深刻的排序原理和思想。接下来,我们将详细地介绍冒泡排序。

qq_57128262的博客 947

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【数据结构与算法】冒泡排序算法(BubbleSort)

C 语言,Python 语言和 Java 语言描述的冒泡排序算法,来看看它们之间的异同吧 !

深入挖掘,筑基为先;知其然,知其所以然。 7629

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

动画:如何给面试官写一个满意的冒泡排序

作者 | 小鹿 来源 | 一个不甘平凡的码农 写在前边 对于冒泡排序,很多小伙伴已经可以说很熟悉了,顺手就可以写出来,但对于一个初学者来说,小鹿想通过这篇文章,让你一次性就理解冒泡排序以及冒泡排序的优化,就不用去翻看其他文章了。 记得之前一个读者和小鹿说去面试的时候,面试官让写一个冒泡排序,也写出来了,最后去没有通过面试。其实他的冒泡排序没有进行优化的,这也不是重点。 在学数据结构和算法我有...

小鹿动画学编程 2949

征服面试官的冒泡排序算法

1:选择哪种方法实现排序? 2:如何用C语言实现冒泡排序? 3:如何实现一个通用的冒泡排序?

dai_wen的博客 853

如何给面试官写一个满意的冒泡排序

点击蓝色“五分钟学算法”关注我哟加个“星标”,天天中午 12:15,一起学算法作者 | 小鹿来源 | 一个不甘平凡的码农对于冒泡排序,很多小伙伴已经可以说很熟悉了,顺手就...

程序员吴师兄的博客 499

面试官:请你说一下冒泡排序和选择排序的原理,以及二者的区别。

博主之前在面试的时候,被问到过很多次这个问题,所以我特地在这里总结一下,关于冒泡排序和选择排序的认识,也就是在大一的时候,也就是在上C语言课上老师跟我们讲过,因为之后了解ES6语法的便捷性,也就没有再用过,但是底层原理还是需要熟练掌握的,基础功不好,在很大的程度上会影响自己以后的发展的。 冒泡排序 关于冒泡排序:冒泡排序是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地.

qq_39224105的博客 485

面试官:手写一个冒泡排序,并对其改进

前写过一篇选择排序,很多人把它和冒泡排序搞混了,这篇文章对冒泡排序进行一个分析,希望你能分清楚,也希望能在面试的时候能够完美的回答出冒泡排序。今年的工作据说是不好找,当然运气占很大一部分,但是实力越强运气的成分就会相应降低吧。 一、认识冒泡排序 之前在学习排序算法的时候,冒泡排序往往都是第一个被介绍,就是因为其太简单。冒泡排序很简单: 依次比较相邻的两个数,将小数放在前面,大数放在后面。 ...

记录学习生活的点滴(Linux运维、java) 541

10大排序算法之二:冒泡排序【稳定的】,但复杂度高,一般不用冒泡排序的

十大排序算法之2:冒泡排序是稳定的排序,但复杂度高o(n^2),系统中一般不用冒泡排序的

weixin_46838716的博客 4242

要是你还看不懂这篇冒泡排序,麻烦找我要红包

面试官: 写一个冒泡排序吧 冒泡排序是一个比较经典和简单的排序算法,今天我们从从算法本身,时间复杂度以及稳定性方面来看看冒泡排序,这些方面也是研究其他排序算法的一般思路 一、冒泡思想 在算法国内,相传有一位大师,他不喜做官,在民间传道受业,弟子三千,人称“克” 有一天,克带着得意弟子谦子去溪边游玩,看到许多大大小小的石头在溪边,克拿起了四个大小不同的石子,摆成一行,如下: 问:“谦子,你如何将这些石子按照从小到大的顺序从左到右依次排列成一行?” “先找出最大的放在右边,然后再找出次大的,放在最大的左边.

帅地 4249

面试官:说说你对冒泡排序的理解?如何实现?应用场景?

一、是什么冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法冒泡排序的思想就是在每次遍历一遍未排序的数列之后,将一个数据元素浮上去(也就是排好了一个数据)如同碳酸饮...

weixin_44475093的博客 3507

面试官:手写一个冒泡排序,并对其改进(java实现)

之前写过一篇选择排序,很多人把它和冒泡排序搞混了,这篇文章对冒泡排序进行一个分析,希望你能分清楚,也希望能在面试的时候能够完美的回答出冒泡排序。今年的工作据说是不好找,当然运气占很大一部分,但是实力越强运气的成分就会相应降低吧。 一、认识冒泡排序 之前在学习排序算法的时候,冒泡排序往往都是第一个被介绍,就是因为其太简单。冒泡排序很简单: 依次比较相邻的两个数,将小数放在前面,大数放在后面。 注...

冯冬冬的博客 1609
上一篇: Java关键字:final,static,this,super
下一篇: 「最强」Springboot学习路线汇总(升职加薪必备架构图)
Javaesandyou
博客等级 码龄5年 742粉丝 563原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值