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)。

 念念不忘,必有回响

猜你喜欢

转载自blog.csdn.net/qq_52213943/article/details/126336231