冒泡排序
    冒泡排序只会操作相邻的两个数据,每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。
    如果不满足就交换元素,一次冒泡 会让至少一个元素移动到它应该在的位置,重复n次,完成n个数据的排序工作。

    冒泡排序是原地排序算法吗?
    冒泡的过程只涉及相邻数据的交换,只需要常量级的临时空间,是一个原地排序算法(空间复杂度O(1))

    冒泡排序算法是稳定算法吗?
    当相邻两个元素大小相等的时候,不做交换,即大小相同数据排序前后不变,是稳定的排序算法

    什么是有序度?
    有序度是数组中具有有序关系的元素对的个数
    image.png
    对于一个完全有序的额数组,有序度是n*(n-1)/2,也称为满有序度
    公式:逆有序度 = 满有序度 - 有序度
    *
    冒泡排序算法是时间复杂度是多少?
    假设排序数据是有序,只需要进行一轮冒泡排序,即最好时间复杂度是O(n)
    假设排序数据是倒叙排列,需要进行n轮冒泡排序,即最坏时间复杂度是O(n)
    用有序度的概念分析平均时间复杂度,就是n
    (n-1)/4,即平均时间复杂度是O(n)

    冒泡排序算法的空间复杂度?
    冒泡排序的空间时间复杂度是O(1)

    1. def bubble(array):
    2. """冒泡排序"""
    3. for i in range(len(array) - 1):
    4. for j in range(len(array) - i - 1):
    5. if array[j] > array[j + 1]:
    6. array[j], array[j + 1] = array[j + 1], array[j]
    7. print(array)
    8. bubble([8346, 4675, 2985, 5917, 5275, 7284, 9516, 6532])