x=[5,21,54,4,6,34,56,34,43,63,9]
1.冒泡排序
def bubble_sort(x):
for i in range(len(x)-1):
for j in range(len(x)-i-1):
if x[j]>x[j+1]:
x[j],x[j+1]=x[j+1],x[j]
y=x[::]
print('y:',y)
bubble_sort(y)
print('排序后y:',y)
运行结果:
2.选择排序
def select_sort(x):
for i in reange(len(x)-1):
index=i
for j in range(i+1,len(x)):
if x[index]>x[j]
index=j
x[index],x[i]=x[i],x[index]
y=x[::]
select_sort(y)
print(y)
3.插入排序
def insert_sort(x):
for i in range(1,len(x)):
for j in range(i,0,-1):
if x[j]<x[j-1]:
y[j],y[j-1]=y[j-1],y[j]
y=x[::]
insert_sort(y)
print(y)
改进以上插入排序算法,减少交换次数
def insert1_sort(x):
for i in range(1,len(x)):
temp=y[i]
j=i
while j>0 and y[j-1]>temp:
y[j]=y[j-1]
j=j-1
y[j]=temp
y=x[::]
insert1_sort(y)
print(y)
4.shell排序
def shell_sort(x):
n=len(x)
dk=n//2 # 间隔
while dk>=1:
shell_insert_sort(x,dk)
dk=dk//2
def shell_insert_sort(x,dk):
n=len(x)
for k in range(dk):
for i in range(k+dk,n,dk):
temp=y[i]
j=i-dk
while j>=k and y[j]>temp:
y[j+dk]=y[j]
j=j-dk
y[j+dk]=temp
y=x[::]
print(y)
shell_sort(y)
print(y)
5.快速排序
def quick_sort(y):
if len(y)<2:
return y
else:
baseValue=y[0]
smaller=[s for s in y[1:] if s<baseValue]
bigger=[b for b in y[1:] if b>baseValue]
equal=[e for e in y if e==baseValue]
return quick_sort(smaller)+equal+quick_sort(bigger)
y=x[::]
print(y)
print(quick_sort(y))