冒泡排序

2020-06-23  本文已影响0人  SunnyQjm

主要思想:每轮依次 从前往后 比较相邻的两个元素,将两个元素中 较大的排在后面每一轮 可以将当前 未排序部分最大的置于最后。(每轮通过冒泡的方式将当前未排序部分最大的元素冒出)

提示:有每轮将最大的冒出这种方式冒泡,自然有每轮将最小的冒出到头部这种方式,这边所说的冒泡指的是前者(PPT里面说的也是前者啦)

1.1 简单演示

  • 白色背景表示未排序部分
  • 灰色背景表示已排序部分
  • 淡蓝色表示正在进行对比交换的两个元素
sort_base.png sort.png sort2.png

1.2 实现分析

对于一个长度位n的待排序数组A,我们作如下分析

1.3 实现

# 第一个for循环采用正向遍历的冒泡排序代码示例
def bubbleSort(A):
    n = len(A)
    for i in range(n - 1):
        for j in range(n - i - 1):
            if A[j] > A[j + 1]:
                A[j], A[j + 1] = A[j + 1], A[j]


# 第一个for循环采用反向遍历的冒泡排序代码示例
def bubbleSort2(A):
    n = len(A)
    for i in range(n - 1, 0, -1):
        for j in range(i):
            if A[j] > A[j + 1]:
                A[j], A[j + 1] = A[j + 1], A[j]


if __name__ == '__main__':
    A = [5, 7, 1, 3, 6, 2, 4]
    bubbleSort(A)
    print(A, "= [1, 2, 3, 4, 5, 6, 7]")

    A = [5, 7, 1, 3, 6, 2, 4]
    bubbleSort2(A)
    print(A, "= [1, 2, 3, 4, 5, 6, 7]")

上一篇 下一篇

猜你喜欢

热点阅读