• 21天打卡挑战 - 经典算法之冒泡排序


    ​​​CSDN打卡活动产出

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

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
    想系统/深入学习某技术知识点…
    一个人摸索学习很难坚持,想组团高效学习…
    想写博客但无从下手,急需写作干货注入能量…
    热爱写作,愿意让自己成为更好的人…

     

    **

    创作计划

    **
    机缘

    实战项目中的经验分享
    日常学习过程中的记录
    通过文章进行技术交流

    收获

    希望以此结交到志同道合的朋友

    提升个人算法基础水平

    日常

    平均每周产出2-3篇文章

    有限的精力下,只能少一些玩游戏的时间,陪女朋友的时间不敢少

    憧憬

    期待粉丝上万 浏览过百万!!

    **

    学习计划

    **
    学习目标

    永远充满热情,坚持21天学习打卡

    学习内容

    冒泡排序

    **

    学习日记

    **
    学习知识点

    交换排序介绍

            交换排序的核心思想是,每次将元素两两比较,如果不满足正确的相对序列(如:较小的应该在前)则进行交换。不断的根据某个规律进行比较和交换,直到全部满足为止,此时也就得到了一个有序的序列。


    冒泡排序

            也称气泡排序,是经典的交换排序方法。整个过程就是在无序区中对相邻元素进行两两比较,将不满足相对顺序的一对儿元素进行交换,再进行下一对儿元素的比较。每一趟冒泡后,就会送一个最小的元素达到最上端。在无序区中重复这个过程,直到所有的元素有序。

    升级plus

            快速排序是冒泡排序的改进算法,主要思想是在待排序列中取一个元素(通常为第一个)作为参照,将序列分为两个子序列,比参照值小的元素和比参照值大的元素各自组成一个子序列。每趟排序会使参照元素归位,并得到两个子序列。在子序列中继续执行该步骤,直到子序列的长度为0或1。

    算法说明

            总结来说,每一趟冒泡排序将会排好一个元素。排序时会(在无序区中)的一端开始元素的扫描,先以最后一个元素为基准,与前一个元素进行比较,如果较小,则交换。如果遇到一个更小的,则不交换,继续向前进行两个相邻元素的比较。按照这样的过程执行后,无序区中最小的元素一定会被交换至最前,被划入有序区,也就排好了一个元素。
            不断的在无序区中执行该步骤,如果在某一次比较的过程中没有发生元素的交换,则证明元素都已经有序,可以提前结束整个算法。或者直到无序区中的元素减少到一个时,整个算法结束,此时整个序列应有序。

    复杂度

            冒泡排序一共要进行(n-1)次循环,每一次循环都要进行当前n-1次比较,所以一共的比较次数是 : (n-1) + (n-2) + (n-3) + … + 1 = n*(n-1)/2;所以冒泡排序的时间复杂度是 O(n2)

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

     念念不忘,必有回响

  • 相关阅读:
    【Hack The Box】windows练习-- Object
    2022年全球及中国刹车片行业头部企业市场占有率及排名调研报告
    redis高级案列case
    项目成本超支的主要原因以及解决方法
    机器学习笔记:seq2seq & attentioned seq2seq
    JS Regex
    JDBC封装查询单个和查询多个
    BES 在大规模向量数据库场景的探索和实践
    2022第8届中国大学生程序设计竞赛CCPC威海站, 签到题7题
    Linux权限——“Linux”
  • 原文地址:https://blog.csdn.net/qq_52213943/article/details/126336231