插入排序
- 时间复杂度,空间复杂度
Attention
插入排序的时间复杂度受到输入数据尺寸的影响,有可能只看到一次就完成了排序,也有可能需要从头看到尾才能完成排序
-
思路:逐步保证
0~i位置上有序。从i开始向前走,两两比较,把较小的数字换到前面;随后i++,重复上述步骤。 -
演示:

-
伪代码:
for i in range(0, N):
if i == 1: continue
for j in range(i, 0, -1): # 注意 python 含左不含右
if arr[j] < arr[j-1]:
swap(arr[i-j], arr[i-j-1])
else:
break # 注意这里可以及时break出来!- 实际代码
def insertSort(nums: List[int]) -> List[int]:
N = len(nums)
for i in range(0, N):
if i == 0: continue
# 注意 range 里的取值
for j in range(i, 0,-1):
# 有 j-1 注意 j 的取值不要让他越界
if nums[j] < nums[j-1]:
temp = nums[j]
nums[j]=nums[j-1]
nums[j-1]=temp
else:
break
return nums