冒泡排序:
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