十大排序算法之三:插入排序(Python)

一、插入排序简介
插入排序之所以叫插入排序,是因为它的排序方式是不断从未排序序列中取出一个数,插入到已排序序列的合适位置。就像是数组插入一样,需要不断的移动数据,如果要插入的这个数是在已排序的序列中间的话,就需要从中间往后的数据依次后后移一个位置,给新插入的元素腾位置。

它的原理是先构建一个有序序列,对于未排序数据,在已排序序列中从后向前扫面,找到对应位置并且插入。

二、插入排序步骤
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))

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值