插入排序 是一种简单直观的排序算法。
它的工作原理:
- 构建有序序列;
- 已排序序列对未排序数据从后向前扫描;
- 找到相应位置并插入。
插入排序在实现上,通常采用in-place排序
O
(
1
)
O(1)
O(1)的额外空间的排序,因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
动图解释:
动图解释算法:
动图程序可以在这里下载。
算法python程序实现:
def insertionSort(arr):
for i in range(len(arr)):
preIndex = i-1
current = arr[i]
while preIndex >= 0 and arr[preIndex] > current:
arr[preIndex+1] = arr[preIndex]
preIndex-=1
arr[preIndex+1] = current
return arr
array = np.random.randint(20)
print(insertionSort(array))