插入排序和希尔排序算法各自两种Python实现方法

一、插入排序算法:

# coding:utf-8

def insertSort(listx):
    length = len(listx)
    for j in range(1, length):
        #Means01:(方法一)
        # for i in range(j,0,-1):
        #     if listx[i] < listx[i-1]:
        #         listx[i],listx[i-1] = listx[i-1],listx[i]
        #     else:
        #         break  #此处的break可以减少多余的循环。
        #Means02:(方法二)
        i = j
        while i > 0:
            if listx[i] < listx[i-1]:
                listx[i],listx[i-1] = listx[i-1],listx[i]
                i -= 1
            else:
                break  #此处的break可以减少多余的循环。
#功能测试:
if __name__ == "__main__":
    list = [99, 212, 43, 98, 29, 48, 37, 111, 1, -15, 234, 143, -13994]
    print(list)
    insertSort(list)
    print(list)

二、Shell排序算法:

# coding:utf-8

def shellSort(listx):
    length = len(listx)
    step = length // 2
    while step >= 1:
        #以下为步长为step的插入排序:
        for j in range(step, length):
            #Means01:(方法一)
            for i in range(j,0,-step):
                if listx[i] < listx[i-step]:
                    listx[i],listx[i-step] = listx[i-step],listx[i]
                else:
                    break  #此处的break可以减少多余的循环。
            #Means02:(方法二)
            # i = j
            # while i > 0:
            #     if listx[i] < listx[i-step]:
            #         listx[i],listx[i-step] = listx[i-step],listx[i]
            #         i -= step
            #     else:
            #         break  #此处的break可以减少多余的循环。
        #步长逐步缩短,最终缩短至1:
        step //= 2
#功能测试:
if __name__ == "__main__":
    list = [99, 212, 43, 98, 29, 48, 37, 111, 1, -15, 234, 143, -13994]
    print(list)
    shellSort(list)
    print(list)

注意:测试过程中,若出现IndentationError: unexpected indent异常,则可能是由注释方法所致。如果上述两种方法中的一种用三个引号(’’'或""")方式注释,或可见此缩进异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值