排序算法-python

选择排序

def Sord_select(a):
    length=len(a)
    for i in range(length):
        pos = i
        for j in range(i+1,length):
            if a[pos]>a[j]:
                pos=j
        if pos!=i:
            a[pos],a[i]=a[i],a[pos]
    return a
import random
a=list(random.randint(1,1000) for i in range(10))
print(a)

print(Sord_select(a))

插入排序

def insert_sort(a):
    length=len(a)
    for i in range(1,length):
       pos=i-1
       w=a[i]
       while pos>=0 and w<a[pos]:
           a[pos+1]=a[pos]
           pos-=1
       a[pos+1]=w
       print(a)
    return a

import random
a=list([random.randint(0,100) for i in range(10)])
print(a)
print(insert_sort(a))

希尔排序

def shell_sort(a):
    length=len(a)
    k=length//2
    while k:
        for i in range(k,length):
            pos = i-k
            w=a[i]
            while pos>=0 and w<a[pos]:
                a[pos+k]=a[pos]
                pos-=k
            a[pos+k]=w
        k//=2
    return a
import random
a=list([random.randint(10,1000) for i in range(10)])
print(a)
print(shell_sort(a))

归并排序

def merga(L,R):
    a=[]
    len_L=0
    len_R=0
    while len_L<len(L) and len_R<len(R):
        if L[len_L]>R[len_R]:
            a.append(R[len_R])
            len_R+=1
        else:
             a.append(L[len_L])
             len_L+=1
    
    a.extend(L[len_L:])
    a.extend(R[len_R:])

    return a

def merge_sort(a):
    length=len(a)
    if length<2:
        return a
    Left=a[0:length//2]
    Right=a[length//2:]
    return merga(merge_sort(Left),merge_sort(Right))

import random
a=list([random.randint(10,1000) for i in range(10)])
print(a)
print(merge_sort(a))

快速排序

def partition(a,s,t):
    i=s
    j=t
    w=a[i]
    while i<j:
        while i<j and a[j]>=w:
            j-=1
        a[i]=a[j]
        while i<j and a[i]<=w:
            i+=1
        a[j]=a[i]
    a[i]=w
    return i

def quick_sort(a,s,t):
    if s<t:
        i=partition(a,s,t)
        quick_sort(a,s,i-1)
        quick_sort(a,i+1,t)

import random
a=list([random.randint(1,100) for i in range(10)])
print(a)
quick_sort(a,0,len(a)-1)
print(a)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值