主流排序算法——python

冒泡排序:

def sort(List):
    for i in range(len(List)-1):
        for j in range(SB):
            if List[j]>List[j+1]:
                t=List[j]
                List[j]=List[j+1]
                List[j+1]=t

选择排序:

def sort(List):
    for i in range(len(List)):
        min=2187483647
        k=0
        for j in range(i,len(List)):
            if List[j]<min:
                min=List[j]
                k=j
        p=List[i]
        List[i]=List[k]
        List[k]=p

插入排序:

def sort(List):
    for i in range(len(List)):
        for j in range(i):
            if List[i]<List[j]:
                t=List[i]
                List[i]=List[j]
                List[j]=t

希尔排序:

def shell_sort(arr):
    gap=len(arr)//2
    while gap>0:
        for i in range(gap,len(arr)):
            temp=arr[i]
            j=i
            while j>=gap and arr[j-gap]>temp:
                arr[j]=arr[j-gap]
                j-=gap
            arr[j]=temp
        gap//=2

快速排序:

def par(start,end,List):
    p=List[start]
    m=start
    for i in range(start+1,end+1):
        if List<p:
            m+=1
            t=List[m]
            List[m]=List[i]
            List[i]=t
    List[start]=List[m]
    List[m]=p
    return m
def sort(start,end,List):
    if start>=end:
        return 0
    p=par(start,end,List)
    sort(start,p-1,List)
    sort(p+1,end,List)

归并排序:

def sort(arr):
    if len(arr)<=1:
        return arr
    mid=len(arr)//2
    left=arr[:mid]
    right=arr[mid:]
    sort(left)
    sort(right)
    return merge(left,right)
 
def merge(left,right):
    result=[]
    i,j=0,0
    while i<len(left) and j<len(right):
        if left[i]<right[j]:
            result.append(left[i])
            i+=1
        else:
            result.append(right[j])
            j+=1
    result+=left[i:]
    result+=right[j:]
    return result

 堆排序:

def down(p,l,List):
    t=List[p]
    c=2*p+1
    while c<l:
        if c+1<l and List[c+1]>List[c]:
            c+=1
        if t>=List[c]:
            break
        List[p]=List[c]
        p=c
        c=2*c+1
    List[p]=t
def sort(List):
    for i in range((len(List)-2)//2,-1,-1):
        down(i,len(List),List)
    for i in range(len(List),-1,-1):
        t=List[i]
        List[i]=List[0]
        List[0]=t
        down(0,i,List)

计数排序:

def sort(List):
    max=List[0]
    min=List[0]
    for i in range(1,len(List)):
        if List[i]>max:
            max=List[i]
        if List[i]<min:
            min=List[i]
    d=max-min
    array=[0]*(d+1)
    for i in range(0,len(List)):
        array[List[i]-min]+=1
    for i in range(1,len(array)):
        array[i]+=array[i-1]
    temp=[0]*len(List)
    for i in range(len(List)-1,-1,-1):
        temp[array[List[i]-min]-1]=List[i]
        array[List[i]-min]-=1
    List=temp

桶排序:

def sort(List):
    if len(List)<=1:
        return 0
    max=List[0]
    min=List[0]
    for i in range(1,len(List)):
        if List[i]>max:
            max=List[i]
        if List[i]<min:
            min=List[i]
    d=max-min
    t=len(List)
    bucket=[]
    for i in range(0,t):
        bucket.append([])
    for i in range(0,t):
        num=int((List[i]-min)*(t-1)/d)
        bucket[num].append(List[i])
    for i in range(0,t):
        sort(bucket[i])
    temp=[]
    for i in bucket:
        for j in i:
            temp.append(j)
    List=temp

基数排序:

def sort(List):
    max=List[0]
    for i in range(1,len(List)):
        if List[i]>max:
            max=List[i]
    d=len(str(max))
    for i in range(d):
        k=10**i
        array=[[]]*10
        for j in List:
            t=j//k
            t%=10
            array[t].append[k]
        temp=[]
        for n in array:
            for m in n:
                temp.append(m)
        List=temp

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值