算法:插入排序 (属原址排序)
实现:将数据划分为三部分:待排数,待排序列,已排序序列;将待排数通过与已排序的序列从末端进行逐一对比,当待排数不大于当前对比数时将待排序插入对比数之后
时间复杂度: Θ ( n ) \Theta(n) Θ(n)~ Θ ( n 2 ) \Theta(n^2) Θ(n2)
python
def insertion_sort(nums):
for j in range(1, len(nums)): #待排序列
x = nums[j] #待排数
i = j - 1 # 已排序的终止索引
while i >= 0 and nums[i] > x:
nums[i + 1] = nums[i] #当对比数大于待排数时,对比数后移
i -= 1 #继续与下一个对比数进行对比
nums[i + 1] = x #当待排数不大于对比数时,将待排数插入对比数之后
if __name__ == '__main__':
nums = [5, 2, 4, 6, 1, 3]
insertion_sort(nums)
print(nums)