【数据结构排序算法篇】----冒泡排序【实战演练】

本文详细介绍了冒泡排序的工作原理、实战操作过程,分析了其时间空间复杂度,并讨论了其优缺点,以及在面试中的应用场景。适合初学者和面试者了解和提升排序算法基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

作为一名对技术充满热情的学习者,我一直以来都深刻地体会到知识的广度和深度。在这个不断演变的数字时代,我远非专家,而是一位不断追求进步的旅行者。通过这篇博客,我想分享我在某个领域的学习经验,与大家共同探讨、共同成长。请大家以开放的心态阅读,相信你们也会在这段知识之旅中找到启示。


前言

冒泡排序顾名思义,想泡泡一样慢慢冒上去,今天,我们就来深刻理解冒泡排序的排序步骤,通过一些联系给大家讲解如何解决有关冒泡排序算法的一些问题。


一、什么是冒泡排序

冒泡排序(Bubble Sort)是一种基础的排序算法。它的工作原理是通过重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素为止,这时数列就完全排序好了。

  • 冒泡排序的名称来自于较小的元素会像“气泡”一样逐渐通过交换“浮”到数列的顶端,而较大的元素则沉到底部。

这里有一个简单的冒泡排序算法的例子:

假设我们有一个数组 arr[5] = {5, 2, 9, 1, 5},我们要对它进行升序排序
冒泡排序的具体步骤如下:

1.从数组的第一个元素开始,比较相邻元素的值。
2.如果前一个元素比后一个元素大(针对升序排序),交换它们的位置。
3.对数组的每一对相邻元素重复步骤1和2,直到数组的最后一个元素,这时最大的数就“冒泡”到了数组的最后位置。
4.因为最大的数已经在正确的位置了,所以可以忽略它,对数组的剩余部分重复步骤1到3的过程。

重复上述过程,每次遍历时忽略已确定位置的元素,直到没有任何一对数字需要交换,排序就完成了。
以下是对上述数组进行冒泡排序的过程:
初始数组: [5, 2, 9, 1, 5]

  • 第一趟冒泡:[2, 5, 1, 5, 9](最大的数9已到达最终位置)
  • 第二趟冒泡:[2, 1, 5, 5, 9](较大数5进行了移动)
  • 第三趟冒泡:[1, 2, 5, 5, 9](较小的数1移到了开头)
  • 第四趟冒泡:[1, 2, 5, 5, 9](数列已经排序完成,没有任何交换)

虽然冒泡排序在理解和实现上非常简单,但它通常不适合大规模数据的排序,因为其平均情况和最坏情况的时间复杂度都是O(n^2),其中n是数组的大小。因此,在需要高效排序的应用中,通常会采用更高效的算法,如快速排序、归并排序或堆排序

二、实战练习

现在我们对下面的数组冒泡排序:

arr = [64, 34, 25, 12, 22, 11, 90]

下面是详细步骤,希望同学们可以先自己练习:
初始数组状态:

[64, 34, 25, 12, 22, 11, 90]
  • 第1趟冒泡:
(64, 34) 比较,需要交换 -> [34, 64, 25, 12, 22, 11, 90]
(64, 25) 比较,需要交换 -> [34, 25, 64, 12, 22, 11, 90]
(64, 12) 比较,需要交换 -> [34, 25, 12, 64, 22, 11, 90]
(64, 22) 比较,需要交换 -> [34, 25, 12, 22, 64, 11, 90]
(64, 11) 比较,需要交换 -> [34, 25, 12, 22, 11, 64, 90]
(64, 90) 比较,不需交换 -> [34, 25, 12, 22
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值