算法名称  最差时间复杂度  平均时间复杂度  最优时间复杂度  空间复杂度     

插入排序    O(N^2)     O(N^2)      O(N)            O(1)  

插入排序不断地在一个已经是有序的数组中,寻找合适位置并插入新元素  

插入排序是一种稳定算法。

整个数组分为有序空间和无序空间,有序空间第一位默认已经排序。无序空间从后往前依次进行比较,如果待插入元素大于比较元素,则插入比较元素后一位,如果待插入元素小于比较元素,则插入比较元素前一位,比较元素后移一位。

def insert_sort(source):
    for i in range(1, len(source)):
        for j in reversed(range(1,i+1)):
            if source[j] < source[j - 1]:
                source[j-1],source[j]=source[j],source[j-1]
        print(source)
    return source

if __name__ == '__main__':
    source = [4, 3, 9, 2, 8, 1, 10, 6, 5, 3]
    insert_sort(source)