# 插入排序
# 平均时间复杂度 O(n^2)
# 最好情况 O(n)
# 最坏情况 O(n^2)
# 空间复杂度 O(1)
# 算法描述:
# (1) 从第一个元素开始,该元素可以认为已经被排序;
# (2) 取出下一个元素,在已经排序的元素序列中从后向前扫描;
# (3) 如果该元素(已排序)大于新元素,将该元素移到下一位置;
# (4) 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
# (5) 将新元素插入到该位置后;
# (6) 重复步骤2~5。
# 例子:[2, 1, 7, 4, 5]
# [1, 2, 7, 4, 5]
# [1, 2, 7, 4, 5]
# [1, 2, 4, 7, 5]
# [1, 2, 4, 5, 7]
# python实现
def Insert_sort(lists):
# 获取lists的总长度
count = len(lists)
for i in range(1, count): # 假设第一个数是排序好的
key = lists[i] # 取出当前未排序的数
j = i - 1 # 从后往前,先去未排序数的前一个数
# 若当前未排序的数比比排序好的数还小,并且没有到数组的开头
while j >= 0 and lists[j] > key:
lists[j + 1] = lists[j] # 排序好的数往后挪一个位置
j = j - 1 # 取排序好的前一个数进行比较
lists[j + 1] = key # 插入当前要排序的数
print(lists)
return lists
if __name__ == "__main__":
lists = [2, 1, 7, 4, 5]
print(Insert_sort(lists))
插入排序
最新推荐文章于 2024-09-23 14:27:27 发布