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

简介: 数据结构与算法-冒泡排序

冒泡排序是一种简单的排序算法,它通过重复地交换相邻的元素,直到整个序列按照升序或降序排列。它的工作原理如下:

  1. 比较相邻的两个元素。如果前一个元素大于后一个元素,就交换它们的位置。
  2. 对整个序列重复步骤1,直到没有任何一对相邻元素需要交换,也就是说序列已经按照升序排列完成。

具体过程如下:

  1. 从第一个元素开始,比较相邻的两个元素。如果第一个元素大于第二个元素,就交换它们的位置。
  2. 对剩余的元素重复步骤1,直到最后一个元素。
  1. 重复步骤1-2,直到整个序列按照升序排列完成。

附冒泡排序代码实现:

#时间复杂度:O(n**2)
def bubble_sort(li):
    for i in range(len(li)-1):   #第i趟
        flag = False  #巧妙思路 判断第i趟过去之后是否有数的交换 减少不必要的循环
        for j in range(len(li)-i-1): #箭头指第几个数
            if li[j]>li[j+1]:
                li[j],li[j+1]=li[j+1],li[j]
                flag = True  #如果进行了交换 则标志改变
        print(li)
        if not flag: #如果白白走了一趟 说明已经排好 没必要继续循环下去 可以直接停止
            return  #停止循环 减低时间复杂度
li=[3,2,5,6,8,7,4,9,1]
bubble_sort(li)

冒泡排序的时间复杂度为O(n^2),因为它需要进行n-1轮比较和交换操作。虽然它是一种简单的排序算法,但在某些情况下效率较低,因此在实际应用中通常会使用更高效的排序算法,如快速排序、归并排序等。

目录
相关文章
|
3月前
|
搜索推荐 算法 Go
Go语言数组排序(冒泡排序法)—— 用最直观的方式掌握排序算法
本案例介绍使用冒泡排序对整数数组进行升序排序的实现方法,涵盖输入处理、错误检查与排序逻辑。通过代码演示和算法解析,帮助理解排序原理及Go语言切片操作,为学习更复杂排序算法打下基础。
|
3月前
|
搜索推荐
冒泡排序与其它排序算法比较
本内容比较了冒泡排序、选择排序和插入排序的特性。三者时间复杂度均为O(n²),但交换次数和稳定性不同。冒泡排序稳定,交换次数多,可优化至O(n);选择排序不稳定,交换次数少;插入排序交换次数最少,且二者均为稳定排序。对于有序数组,冒泡和插入可优化提升效率。
47 0
|
11月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
248 67
|
12月前
|
搜索推荐
冒泡排序算法
【10月更文挑战第19天】冒泡排序是一种基础的排序算法,虽然在实际应用中可能不是最优的选择,但对于理解排序算法的基本原理和过程具有重要意义。
|
12月前
|
搜索推荐 算法 数据可视化
深入解析冒泡排序算法
深入解析冒泡排序算法
149 5
|
12月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
347 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
12月前
|
搜索推荐
冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析
冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析
182 1
|
12月前
|
搜索推荐 C语言
排序算法--冒泡排序
排序算法--冒泡排序
63 0
|
12月前
|
存储 搜索推荐 算法
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
|
12月前
|
算法 Python
Python算法编程:冒泡排序、选择排序、快速排序
Python算法编程:冒泡排序、选择排序、快速排序
127 0

热门文章

最新文章