美文网首页
算法理解之排序-冒泡排序

算法理解之排序-冒泡排序

作者: 高咕噜黑小帅 | 来源:发表于2019-03-02 23:00 被阅读0次

算法理解之排序-冒泡排序

冒泡排序是一种简单的排序算法, 算法依次走访未排序的元素, 然后将相邻元素依次两两比较, 将最大的元素不断移动至最后, 直到所有元素均被排序过为止. 因为最大元素是从某个位置不断"浮"上去的, 所以称为冒泡排序

算法分析

  1. 取得相邻的两个元素, 比较两个元素大小, 若第一个元素大于第二个元素, 则交换位置(上浮).
  2. 将相邻元素位置后移一位, 再次按步骤1比较, 直至该元素比对到已排序过位置或最后位置.
  3. 重复步骤1步骤2直到完成排序.

动图效果

冒泡排序.gif

时间复杂度与空间复杂度与稳定性

稳定性: 稳定
时间复杂度: O(N^2)
空间复杂度: O(1)

稳定性分析: 两外相邻的元素比较, 只要在前者大于后者于才变更位置, 其他情况下不变.
时间复杂度解析: 冒泡排序需要完成两层迭代过程, 第一层确保每个元素都进行排序.第二层来比较并排序元素.所以时间复杂度为O(N^2).
空间复杂度解析: 所有排序均在当前列表中完成, 不存在额外使用内存情况. 所以空间复杂度为O(1).

代码示例:

Python

def bubble_sort(li):
    # 获取列表总长度.
    li_len = len(li)
    # 第一层循环, 确保所有元素被遍历
    for i in range(li_len - 1):
        # 第二层循环, 比较并排序元素
        for j in range(li_len - i - 1):
            # 比较当前元素与相邻的下个元素
            if li[j] > li[j + 1]:
                # 交换相邻元素
                li[j], li[j + 1] = li[j + 1], li[j]
    return li

相关文章

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 算法理解之排序-冒泡排序

    算法理解之排序-冒泡排序 冒泡排序是一种简单的排序算法, 算法依次走访未排序的元素, 然后将相邻元素依次两两比较,...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 常见排序算法之冒泡排序

    常见排序算法之冒泡排序 冒泡排序(Bubble Sort),是一种较简单的排序算法。它重复地走访过要排序的元素列,...

  • 前端算法学习-第一篇

    冒泡排序算法 冒泡排序算法是最慢的排序算法之一,也是最容易实现的排序算法。之所以叫冒泡排序是因为使用这种算法排序时...

  • 排序系列之四: 冒泡排序法

    Hello,大家好。今天继续给大家讲解排序系列之☞《冒泡排序算法》 冒泡排序(Bubble Sort)...

  • Java冒泡排序,快速排序理解与实现

    经典排序算法中,有好几种排序,下边说下冒泡排序和快速排序的理解与实现,记太多容易混乱; 1.冒泡排序:字面理解,值...

  • 冒泡排序法

    python排序算法之冒泡排序 首先说一下冒泡排序原理: 冒泡排序(Bubble Sort),是一种计算机科学领域...

  • iOS算法总结-冒泡排序

    iOS算法总结-冒泡排序 iOS算法总结-冒泡排序

网友评论

      本文标题:算法理解之排序-冒泡排序

      本文链接:https://www.haomeiwen.com/subject/eyluuqtx.html