目录
1.冒泡排序
#输入
n=int(input('请输入元素个数:'))
a=[int(x) for x in input(f'请输入{n}个元素:').split()]
flag=True #冒泡排序
while flag==True:
flag=False
for i in range(1,n):
if a[i-1]>a[i]: #如果有相邻的逆序对
a[i-1],a[i]=a[i],a[i-1] #交换逆序对
flag=True
print(a) #输出
2.选择排序
#输入
n=int(input('请输入元素个数:'))
a=[int(x) for x in input(f'请输入{n}个元素:').split()]
for i in range(0,n): #插入排序
minn=i
for j in range(i+1,n): #找到最小值
if a[minn]>a[j]:
minn=j
a[minn],a[i]=a[i],a[minn] #交换
print(a) #输出
3.归并排序
def merge_sort(l,r): #merge_sort(l,r)表示排序a[l~r]
if l==r : #如果区间大小为1
return 0 #直接返回
if l+1==r: #区间大小为2,同理
if a[l]>a[r]:
a[l],a[r]=a[r],a[l]
return 0
mid=(l+r)//2 #分治,先把两个字区间排好序
merge_sort(l,mid)
merge_sort(mid+1,r)
temp=[] #双指针合并区间
l1=l
l2=mid+1
while l1<=mid and l2<=r:
if a[l1]<a[l2]:
temp.append(a[l1])
l1+=1
else:
temp.append(a[l2])
l2+=1
while l1<=mid:
temp.append(a[l1])
l1+=1
while l2<=r:
temp.append(a[l2])
l2+=1
for i in range(l,r+1): #赋值
a[i]=temp[i-l]
n=int(input('请输入元素个数:')) #输入
a=[int(x) for x in input(f'请输入{n}个元素:').split()]
merge_sort(0,n-1) #排序
print(a)