1、冒泡排序
def bubble(alist):
for j in range(len(alist)-1,0,-1):
flag = False
for i in range(j): #一趟排序
if alist[i]>alist[i+1]:
alist[i],alist[i+1] = alist[i+1],alist[i]
flag=True
if flag==False:
break
return alist
print(bubble([1,4,5,2,6,7]))
2、快速排序
def quicksort(q,l,r):
if l>=r:
return
piovt=q[l];i=l+1;j=r
done = False
while not done:
while i<=j and q[i]<=piovt:
i+=1
while j>=i and q[j]>=piovt:
j-=1
if i>j:
done = True
else:
q[i],q[j]=q[j],q[i]
q[l],q[j]=q[j],q[l]
quicksort(q,l,j-1)
quicksort(q,j+1,r)
alist = [54,27,3,349,88,0,-2,90,897,-98,569,-968]
quicksort(alist,0,len(alist)-1)
print(alist)
3、插入排序
def insertsort(q,n):
for i in range(1,n):
temp = q[i]
j=i
while(j>0 and q[j-1]>temp):
q[j]=q[j-1]
j-=1
q[j]=temp
arr = [ 12, 11, 13, 5, 6,8,20,5]
insertsort(arr,len(arr))
print(arr)
一手扑克牌,不断起牌,往进插牌....
4、堆排序
def buildheap(q,size,u):
t=u
left=2*u+1
right =2*u+2
if(left<size and q[left]>q[t]):
t=left
if(right <size and q[right]>q[t]):
t=right
if(t!=u):
q[t],q[u] = q[u],q[t]
buildheap(q,size,t)
def heapsort(q):
n=len(q)
for i in range(n//2,-1,-1):
buildheap(q,n,i)
for j in range(len(q)-1,0,-1):
q[0],q[j] = q[j],q[0]
buildheap(q,j,0)
arr =[54,27,3,349,88,0,-2,90,897,-98]
heapsort(arr)
print(arr)
5、归并排序
def mergsort(q,n):
if n==1 or n==0:
return
mid=n//2
leftarr = q[:mid]
rightarr = q[mid:]
mergsort(leftarr,len(leftarr))
mergsort(rightarr,len(rightarr))
i=0;j=0;k=0
while(i<len(leftarr) and j<len(rightarr)):
if(leftarr[i] < rightarr[j]):
q[k]=leftarr[i]
i+=1
k+=1
else:
q[k] = rightarr[j]
j+=1
k+=1
while(i<len(leftarr)):
q[k]= leftarr[i]
i += 1
k += 1
while j < len(rightarr):
q[k] = rightarr[j]
j += 1
k += 1
arr = [ 12, 11, 13, 5,-9,9876,8,20,5]
mergsort(arr,len(arr))
print(arr)
总结系列: