插入排序
    插入排序包含元素的比较、元素的移动,将一个数据a插入到已排序区间,需要拿a与已排序区间的元素依次比较大小,找到合适的插入位置,找到插入点后,需要将插入点之后的元素顺序往后移动
    插入排序算法是原地排序算法吗?
    空间复杂度是O(1),所以插入排序是原地排序算法

    插入排序是稳定算法吗?
    对于值相同的情况下,我们可以选择将后面出现的元素,插入到前面出现的元素的后面,保持了原有的排序顺序,插入排序是稳定的算法

    插入排序的时间复杂度是?
    最好时间复杂度是O(n)
    最坏时间复杂度是O(n)
    平均时间复杂度是O(n)

    1. def insert_sort(array):
    2. """插入排序"""
    3. for i in range(1, len(array)): # 遍历需要比较的次数
    4. insert_item = array[i] # 需要插入的值
    5. j = i - 1 # 已排序区间的个数
    6. while j >= 0:
    7. if insert_item < array[j]:
    8. array[j + 1] = array[j] # 比插入的值小,后移一位
    9. j -= 1
    10. else:
    11. break # 不用移动,则跳出循环
    12. array[j + 1] = insert_item # 找到要插入的位置
    13. return array