冒泡算法

冒泡算法是基于比较和交换的排序算法,它的基本思想是通过多次遍历待排序序列,每次遍历都将相邻的元素进行比较,如果顺序不符合要求(通常是升序或降序)就交换它们的位置。

以升序排序为例,从数组的第一个元素开始,依次比较相邻的两个元素。如果前一个元素大于后一个元素,就交换它们的位置。这样,在一次遍历结束后,数组中最大的元素就会“浮”到数组的末尾。然后对除了最后一个元素之外的其余元素重复上述过程,直到整个数组都有序为

1. 时间复杂度

- 最好情况:当数组已经是有序的时候,只需要进行一次遍历,比较n - 1次,没有交换操作,时间复杂度为O(n)。

- 最坏情况:数组是逆序的,需要进行n - 1次遍历。第一次遍历需要比较n - 1次,第二次遍历需要比较n - 2次,以此类推,最后一次遍历比较1次。总的比较次数为1 + 2 + \cdots + (n - 1) = \frac{n(n - 1)}{2},时间复杂度为O(n^{2})。

- 平均情况:平均情况下,冒泡算法的时间复杂度也是O(n^{2}),因为大部分情况下数组既不是完全有序也不是完全逆序,比较和交换的次数接近最坏情况。止。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 冒泡算法-Buddle Sort 1.原理 每次比较两个相邻的元素,如果前一个比后一个大,就交换彼此的位置。 2....
    安静成诗阅读 168评论 0 0
  • 什么是冒泡排序呢?冒泡排序的英语名是Bubble Sort,是一种最基础的交换排序。大家一定都喝过汽水吧,汽水中常...
    静亚哦阅读 320评论 0 1
  • 前言 关于数组排序的问题,在之前的文章有很详细的介绍(链接:《iOS面试之道》算法基础学习(下))。在这篇文章中,...
    Tioks阅读 995评论 0 5
  • 在开始学习排序前我们需要明白如下几个知识点: 1.时间复杂度:一个算法执行所需要的时间; 2.空间复杂度:运行完一...
    在路上的_软件菜鸟阅读 249评论 0 0
  • 一,冒泡算法简介 冒泡算法是一种基础的排序算法,这种算法会重复的比较数组中相邻的两个元素。如果一个元素比另一个元素...
    旅行的光阅读 754评论 0 3