用Python实现——插入排序(两种思想)

今天在重新温习排序的时候,突然想着用Python来实现一下插入排序(之前用C语言实现过了,学Python没几天),由于语法还不是很熟悉,可以说实现过程很艰难,竟然用了哟差不多两个小时。。。。

好了,那就正式写了(内含代码可以直接运行)

**首先介绍一下插入排序,作为一种最简单粗暴的排序算法,理解不难,实现也不难,但其时间复杂度比其他排序算法要大点(O(logN*N))
插入排序的工作方式:
将数组(Python中相当于list)中的元素分为两个部分:一、是前部分,是已经排好序的;二、后一部分是带排序的。每次取待排序的一个元素,插入到前面已经排好序的部分,要求不破坏前半部分的有序性。**

在完成插入排序时我想了两种方法(本质一样):
第一种:先找到元素要插入的位置,然后将从该位置(包括)到待插入元素位置之间的元素都向后移动一位,最后将元素插入该位置。代码如下:

 def inertsort(l):  #参数的传入,当想传入的是一个list时,直接传入一个变量就行了
    N=len(l)
    for x in range(1,N):
        a,b=x,x
        n=l[x]
        while n<l[a-1] and a-1>=0:
            a=a-1
            if a-1<0:
                a=0 
        while b>a:
            l[b]=l[b-1]
            b=b-1
        l[a]=n

l=[1,3,2,8,5,3,1]
inertsort(l)
print (l)
第二种思想是:将待插入元素与其前一个元素进行比较,若小于,则将前一个元素后移一位,在将带插入元素与前前一位进行比较,若小于,则将前前一位往后移,如此操作直到遇到小于待插入元素的位置,插入到该位后一位(此位已经在上一步后移了),代码如下:

def insertsort(list):
    N=len(l)
    for x in range(1,N):
        key=list[x]
        a=x
        while key<list[a-1]:
            l[a]=l[a-1]
            a=a-1
            if a-1<0:
                break
        list[a]=key

l=[1,3,2,8,5,3,1]
insertsort(l)
print (l)

以上就是对于插入排序的两种实现了!
顺便吐槽一句,我在网上也找过插入排序的Python实现,都是有错误的(大佬不要介意,我没有百度到您的可能),我希望我这个能让你理解插入排序。

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值