原理:
每插入一个数都要将它和之前的已经完成排序的序列进行重新排序,也就是将新插入的数对应原序列中的位置那么也就是说,每次插入一个数都要对原来排序好的那部分序列进行重新的排序,时间复杂程度同样为O(n2)。这种排序算法是稳定的算法。
插入排序有点冒泡的感觉,他是从最后往前边一点一点的插入。
def insertion_sort(nums):
for i in range(1, len(nums)):
for j in range(i, 0, -1):
if nums[j] < nums[j-1]:
nums[j], nums[j-1] = nums[j-1], nums[j]
if __name__ == '__main__':
nums = [5, 6, 8, 45, 52, 21, 37, 98]
insertion_sort(nums)
print(nums)
京公网安备 11010502036488号