首页 > 其他分享 >一篇文章讲明白冒泡排序

一篇文章讲明白冒泡排序

时间:2023-04-29 23:03:30浏览次数:47  
标签:右边 const 一篇 复杂度 跳转 冒泡排序 bubbleSort 文章

原文点此跳转

什么是冒泡排序(bubbleSort)?

冒泡排序是所有排序算法中最简单的一种,当然也是性能最差的一种。冒泡排序的思想其实很简单,就如它的名字一样在水中 "冒泡"。水中有很多散乱的小气泡,然后一个个气泡往水面上冒出。

例如一组无序的数组,最左边就是水底,最右边就是水面,最左边的元素不断的跟右边的元素比较,最后交换位置到最右边。


算法步骤

  1. 冒泡排序会比较所有相邻的元素
  2. 从第一个数开始,每两个相邻的数进行比较
  3. 这两个相邻的数比较完后,按照小的放在左边,大的放在右边的想法,交换它们的位置
  4. 执行完一轮后,大的数就会被排到最右边
  5. 反反复复重复 n - 1 遍后,整个排序就完成了

动画演示链接

https://visualgo.net/zh/sorting


基础案例

  • 时间复杂度:O (n ^ 2)
  • 空间复杂度:O (1)
Array.prototype.bubbleSort = function () {
    for (let i = 0; i < this.length - 1; i++) {
        for (let j = 0; j < this.length - 1 - i; j++) {
            if (this[j] > this[j + 1]) {
                const temp = this[j]
                this[j] = this[j + 1]
                this[j + 1] = temp
            }
        }
    }
}

const arr = [5, 4, 3, 2, 1]

arr.bubbleSort() // [1, 2, 3, 4, 5]

代码中存在两个嵌套循环,所以时间复杂度是 O (n ^ 2),而空间复杂度是 O (1),因为没有使用会随着数据增大而增大的变量。

原文点此跳转

标签:右边,const,一篇,复杂度,跳转,冒泡排序,bubbleSort,文章
From: https://blog.51cto.com/u_12639291/6237173

相关文章

  • 5、产品运营 - 产品管理系列文章
    产品运营是一项从内容建设,用户维护,活动策划三个层面来管理产品内容和用户的职业。产品运营主要包含三个级别职位:产品运营专员,产品运营经理,产品运营总监。工作内容产品研发期——产品上线前:首先产品运营要搞清楚产品的定位以及目标用户。产品种子期——产品内测期:在这个阶段,产......
  • 4、产品打造 - 产品管理系列文章
    商业中最关键的是产品的开发与打造,如何能打造好产品呢?《产品心经》给你方法。产品经理是产品从无到有、从有到优的最主要负责人,主要的工作包括:用户需求与市场分析,提出差异化的需求解决方案,传递用户价值的市场渠道分析,成本和收入以及盈亏平衡点分析,需求分析与管理和产品交互设计,根......
  • 一篇搞懂数据建模流程
    一、数据建模的基本流程数据建模是一种用于构建数据模型的过程,旨在帮助人们更好地理解数据之间的关系和组织方式。在数据建模的过程中,我们需要采取以下基本步骤:需求分析需求分析是数据建模的第一步,也是最重要的一步。在这一阶段,我们需要理解业务需求和目标,确定数据的目的和范......
  • 写代码犹如写文章: “大师级程序员把系统当故事来讲,而不是当做程序来写” | 如何架构
    “大师级程序员把系统当故事来讲,而不是当做程序来写”写代码犹如写文章好的代码应该如好文章一样表达思想,被人读懂。中心思想:突出明确程序是开发者用编程语言写成的一本书,首先应该是记录开发者对业务需求分析、系统分析,最终用软件实现所思所想的知识的记录与传承。然后再是完成程......
  • 手把手教你掌握冒泡排序思路
    完整代码:#include<stdio.h>bubble_sort(intarr[],intsz){inti=0;intj=0;for(i=0;i<sz-1;i++){for(j=0;j<sz-1-i;j++){if(arr[j]>arr[j+1]){inttmp=arr[j];arr[j]=arr[j+1];arr[j+1]=tmp;}}}}intmain(){intarr[10]=......
  • 1、开篇 - 产品管理系列文章
    笔者曾经做过产品经理,也给员工进行过产品经理培训,这个系列一直想写的,但是在写其它系列的文章,所以这个系列到今天总算开始了。      打造一个产品也是做一个项目的过程,就是说做产品也是属于项目管理的范畴,但是反过来项目就不仅仅是做一个产品了。其实产品经理也比较简单,就......
  • 火山引擎 DataLeap 下 Notebook 系列文章三:架构升级详解
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群当使用Notebook的项目日渐增加时,火山引擎DataLeap研发团队发现运行中的PaaS服务实在太多了,之前的架构有如下缺点:部署麻烦。全量升级JupyterLab较为痛苦。尽管有升级脚本,但是通过A......
  • 关于文章《爬取知网文献信息》中代码的一些优化
    哈喽大家好,我是咸鱼 之前写了一篇关于文献爬虫的文章Python爬虫实战(5)|爬取知网文献信息 文章发布之后有很多小伙伴给出了一些反馈和指正,在认真看了小伙伴们的留言之后,咸鱼对代码进行了一些优化 优化的代码在文末,欢迎各位小伙伴给出意见和指正 问题pycharm设置......
  • 8冒泡排序
    #include<iostream>usingnamespacestd;#defineN10intmain(){ intarr[N],a,k,i,j,count; cin>>a; for(i=0;i<a;i++){ cin>>arr[i]; } for(i=0;i<a;i++){ for(j=i+1;j<a;j++){ k=arr[j]; if(k<arr[i]){ arr[j]=arr[i]; arr[i]=......
  • ChatGPT自动生成发布原创文章seo营销系统开发
    ChatGPT自动生成发布原创文章seo营销系统开发注:此系统性质为,依据你设置关键词类(你要推广的行业关键词,如我们的关键词可为“小程序开发”),然后系统自动生成发布海量原创文章,以达到搜索引擎收录seo目的;用户搜索关键词显示了你的网站,看到了你的广告(网站后台自行设置);达到引流转化的目的......