首页 > 编程语言 >数据结构算法---冒泡排序

数据结构算法---冒泡排序

时间:2023-12-18 19:16:04浏览次数:28  
标签:arr 排序 元素 冒泡排序 列表 --- 算法 数据结构

冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻两个元素并按照大小交换位置,直到整个列表排序完成。这种排序算法得名于越小的元素会经由交换慢慢"浮"到列表的顶端。

下面是冒泡排序的基本步骤:

从列表的第一个元素开始,比较它与下一个元素的大小。
如果当前元素大于下一个元素,则交换它们的位置,将较大的元素向后移动。
继续比较下一个相邻的元素,重复步骤2,直到遍历到列表的倒数第二个元素。
重复上述步骤1-3,直到所有元素都排序完成。

以下是一个使用Python编写的冒泡排序算法的示例代码:

def bubble_sort(arr):
    n = len(arr)
    
    # 遍历所有元素
    for i in range(n):
        # 最后 i 个元素已经排好序,无需再比较
        for j in range(0, n - i - 1):
            # 如果当前元素大于下一个元素,则交换它们的位置
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    
    return arr

# 示例用法
my_list = [64, 34, 25, 12, 22, 11, 90]
sorted_list = bubble_sort(my_list)
print(sorted_list)

以上代码会输出:[11, 12, 22, 25, 34, 64, 90],表示列表已经按照从小到大的顺序排列好了。

冒泡排序的时间复杂度是O(n^2),其中n是要排序的元素个数。在实际应用中,冒泡排序通常不是最优的选择,因为它的性能相对较低,特别是在处理大量数据时。其他高效的排序算法如快速排序、归并排序和堆排序更常用。

总结

冒泡排序是一种简单但效率较低的排序算法。以下是对冒泡排序的总结:

优点:
算法实现简单,易于理解和实现。
冒泡排序是一种稳定的排序算法,不会改变相等元素的原始相对顺序。

缺点:
时间复杂度较高:冒泡排序的时间复杂度是O(n^2),其中n是要排序的元素个数。在处理大量数据时,性能较差。
不适合大规模数据:由于其时间复杂度较高,当数据规模较大时,冒泡排序的效率明显低于其他高效的排序算法,如快速排序、归并排序和堆排序。
额外空间消耗小:冒泡排序只需要一个额外的临时变量用于元素交换,不需要额外的存储空间。

冒泡排序是一种简单但性能较差的排序算法,适用于小规模数据或者教学演示。它的实现相对简单,但在应用场景中并不常见。对于大规模数据的排序需求,更推荐使用其他高效的排序算法,以提高排序速度。

标签:arr,排序,元素,冒泡排序,列表,---,算法,数据结构
From: https://www.cnblogs.com/ywx1207/p/17911989.html

相关文章

  • A Deformable Attention Network for High-Resolution Remote Sensing Images Semanti
    ADeformableAttentionNetworkforHigh-ResolutionRemoteSensingImagesSemanticSegmentation*Authors:[[RenxiangZuo]],[[GuangyunZhang]],[[RongtingZhang]],[[XiupingJia]]DOI:10.1109/TGRS.2021.3119537初读印象comment::(MDANet)提出了可变形注意力,结......
  • 记录--没有await,如何处理“回调地狱”
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助太长不看不要嵌套使用函数。给每个函数命名并把他们放在你代码的顶层利用函数提升。先使用后声明。处理每一个异常编写可以复用的函数,并把他们封装成一个模块什么是“回调地狱”?异步Javascript代码,或者说使......
  • Scale-Prior Deformable Convolution for Exemplar-Guided Class-Agnostic Counting
    Scale-PriorDeformableConvolutionforExemplar-GuidedClass-AgnosticCounting初读印象comment::(计数用的一个网络)提出了一个标度优先的可变形卷积,将典范的信息,例如标度,整合到计数网络主干中。动机本文考虑的是类别无关的计数,其中计数模型预测由一组查询图像中的少数......
  • BiFormer: Vision Transformer with Bi-Level Routing Attention 使用超标记的轻量ViT
    alias:Zhu2023atags:超标记注意力rating:⭐share:falseptype:articleBiFormer:VisionTransformerwithBi-LevelRoutingAttention*Authors:[[LeiZhu]],[[XinjiangWang]],[[ZhanghanKe]],[[WayneZhang]],[[RynsonLau]]Locallibrary初读印象comm......
  • (15-418)Lecture 3 Parallel Programming Abstractions
    抽象VS实现实例:ISPC程序ISPC是一种SPMD(singleprogrammultipledata)编译器。利用ISPC编写的计算sin(x)的程序如下图:ISPC提供了一种抽象,当调用ISPC函数时(即程序中调用sinx的语句),会产生一个gang,这个gang含有多个ISPC实例,每个实例会执行自己的代码,当每个实例都执行完后,恢复原先......
  • 高性能Mixtral:467亿参数MoE技术,逼近GPT-3.5与GPT-4
    模型简介近日,MistralAI团队发布了全新的大型语言模型——Mixtral8x7B。这款以稀疏专家混合模型(SparseMixture-of-Experts,简称SMoE)为基础的语言模型,拥有467亿个参数,是当前市场上最强大的开源权重模型之一。不仅如此,Mixtral8x7B还在Apache2.0许可下开源,为开发者社区提供了一个全......
  • openGauss学习笔记-164 openGauss 数据库运维-备份与恢复-导入数据-使用COPY FROM STD
    openGauss学习笔记-164openGauss数据库运维-备份与恢复-导入数据-使用COPYFROMSTDIN导入数据-处理错误表164.1操作场景当数据导入发生错误时,请根据本文指引信息进行处理。164.2查询错误信息数据导入过程中发生的错误,一般分为数据格式错误和非数据格式错误。数据格式错......
  • AWS CLI - eks
     zzh@ZZHPC:~$awseksupdate-kubeconfig--namezimple-bank--regionap-southeast-2Anerroroccurred(AccessDeniedException)whencallingtheDescribeClusteroperation:User:arn:aws:iam::793698357301:user/github-ciisnotauthorizedtoperform:eks:De......
  • Predicting Drug-Target Interactions. drug-target interactions prediction
    2023[j22]JunjunZhang, MinzhuXie:Graphregularizednon-negativematrixfactorizationwithL2,1 normregularizationtermsfordrug-targetinteractionsprediction. BMCBioinform. 24(1): 375 (2023)2022[j21]JunjunZhan......
  • 无涯教程-Java - Properties 类函数
    Properties是Hashtable的子类。它用于维护值列表,其中键是字符串,并且值也是字符串。属性(Properties)定义以下变量。此变量保存与Properties对象关联的默认属性列表。Propertiesdefaults;以下是properties类提供的构造函数的列表。Sr.No.Constructor&Remark1Properties......