插入排序
插入排序包含元素的比较、元素的移动,将一个数据a插入到已排序区间,需要拿a与已排序区间的元素依次比较大小,找到合适的插入位置,找到插入点后,需要将插入点之后的元素顺序往后移动
插入排序算法是原地排序算法吗?
空间复杂度是O(1),所以插入排序是原地排序算法
插入排序是稳定算法吗?
对于值相同的情况下,我们可以选择将后面出现的元素,插入到前面出现的元素的后面,保持了原有的排序顺序,插入排序是稳定的算法
插入排序的时间复杂度是?
最好时间复杂度是O(n)
最坏时间复杂度是O(n)
平均时间复杂度是O(n)
def insert_sort(array):"""插入排序"""for i in range(1, len(array)): # 遍历需要比较的次数insert_item = array[i] # 需要插入的值j = i - 1 # 已排序区间的个数while j >= 0:if insert_item < array[j]:array[j + 1] = array[j] # 比插入的值小,后移一位j -= 1else:break # 不用移动,则跳出循环array[j + 1] = insert_item # 找到要插入的位置return array
