数据结构笔记:冒泡排序

原文地址

分类目录——数据结构笔记

  • 排序算法的稳定性

假设序列中有两个相同的值,不过排序完成之后这两个相同值的相对位置保持不变,就是这个排序算法时稳定的;反之,则排序算法不稳定

在实际中要求稳定性的场景也不多

  • 原理

以升序为例

bubblesort

每一步两个一比,更大值后移;每一轮把最大值移动到最后;大的就像一个泡,一步一步冒到后面

  • 实现

    def bubbltsort(alist):
        n = len(alist)
        for i in range(n-1, 0, -1):
            for j in range(i):
                if alist[j]>alist[j+1]:
                    alist[j], alist[j+1] = alist[j+1], alist[j]
    
  • 测试

    if __name__ == '__main__':
        print(list(range(9,0,-1)))
        ll = [3,6,2,4,7,5,8,1,0]
        print(ll)
        bubbltsort(ll)
        print(ll)
    
  • 时间复杂度

    • 最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。)
    • 最坏时间复杂度:O(n^2)(每一步都要交换位置)
    • 稳定性:稳定
发布了159 篇原创文章 · 获赞 169 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/BBJG_001/article/details/104767795