python-排序算法

冒泡排序

def bubble_sort(lists):
 if len(lists)<1:
     return lists
 for i in range(len(lists)-1,-1,-1):
        for j in range(i):
            if lists[j]<lists[j+1]:
                lists[j],lists[j+1]=lists[j+1],lists[j]
 return lists

直接插入排序

def direct_insertion_sort(lists):
    if len(lists) < 1:
        return lists
    for i in range(1,len(lists)):
        key=lists[i]
        for j in range(i-1,-1,-1):
            if lists[j]>key:
                lists[j+1],lists[j]=lists[j],lists[j+1]
            else:
                    break
    return lists

希尔排序

def shell_sort(lists):
    if len(lists) <= 1:
        return lists
    middle = int(len(lists) / 2)
    while middle>0:
        for j in range(middle):
            for i in range(0,int(len(lists)/middle-1)-1):
                if lists[i+j]>lists[i+j+1]:
                    lists[i+j],lists[i+j+1]=lists[i+j+1],lists[i+j]
        middle=int(middle/2)
    return lists

归并排序

def merge(a,b):
    c=[]
    h=j=0
    while j<len(a) and h<len(b):
        if a[j]<b[h]:
            c.append(a[j])
            j+=1
        else:
            c.append(b[h])
            h+=1
    if j==len(a):
        for i in b[h:]:
            c.append(i)
    else:
        for i in a[j:]:
            c.append(i)

    return c
def merge_sort(lists):
    if len(lists)<=1:
        return lists
    middle=int(len(lists)/2)
    left=merge_sort(lists[:middle])
    right=merge_sort(lists[middle:])
    return merge(left,right)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tskpcp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值