一、插入排序简介
插入排序之所以叫插入排序,是因为它的排序方式是不断从未排序序列中取出一个数,插入到已排序序列的合适位置。就像是数组插入一样,需要不断的移动数据,如果要插入的这个数是在已排序的序列中间的话,就需要从中间往后的数据依次后后移一个位置,给新插入的元素腾位置。
它的原理是先构建一个有序序列,对于未排序数据,在已排序序列中从后向前扫面,找到对应位置并且插入。
二、插入排序步骤
1:首先把序列中的第一个元素看作是已排序序列,把第二个元素一直到最后一个元素看作是未排序序列。
2:从头到尾依次扫描未排序序列,将扫描到的元素插入到有序序列的合适位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面)
那么:怎么将扫描到的元素 a 插入到有序序列的合适位置呢?
这就需要我们从尾到头依次扫描已排序序列,让a依次和它们比较,如果他它们大于a,就后移一个单位。以此类推,直到找到合适的位置。
三、代码实现
def InsertionSort(arr):
for i in range(len(arr)):
current=arr[i] #用current把a[i]的值临时存下来,要不然之后比较数据往后移动时会把arr[i]的值覆盖掉
perIndex=i-1
while perIndex>=0 and arr[perIndex]>current:
arr[perIndex+1]=arr[perIndex]
perIndex -= 1
arr[perIndex+1]=current
return arr
if __name__=='__main__':
array=[3,44,38,5,15,36,46,2,48,19]
print(InsertionSort(array))