python写的两种排序的实现
插入排序
def Insert(b,a):
if a[-1]<=b:
return a+[b]
elif a[0]>=b:
return [b]+a
else:
for i in range(len(a)-1):
if a[i]<=b and a[i+1]>=b:
a=a[:i+1]+[b]+a[i+1:]
return a
def Sort(a):
b=[a[0]]
for i in range(1,len(a)):
b=Insert(a[i],b)
return b
归并排序
def merge(a,b,c):
if len(a)==0:
c=c+b
return c
elif len(b)==0:
c=c+a
return c
else:
if a[0]>=b[0]:
c.append(b[0])
b=b[1:]
else:
c.append(a[0])
a=a[1:]
return merge(a,b,c)
def Sort(a):
if len(a)==1 or len(a)==0:
return a
else:
p=len(a)//2
return merge(Sort(a[:p]),Sort(a[p:]),[])