冒泡排序:
算法步骤:
比较相邻元素,如果第一个大于第二个则交换。
从左往右遍历一遍,重复第一步,可以保正最大的元素在最后面。
n=int(input())
a=list(map(int,input().split()))
for i in range(1,n):#循环n-1次
for j in range(0,n-i):#第i次从a[0]到a[n-i-1]
if a[j]>a[j+1]:
a[j],a[j+1]=a[j+1],a[j]
print(a)
5 1 4 5 2 3 [1, 2, 3, 4, 5]
选择排序:
算法步骤:
从左往右找到最小的元素放到起始的位置。
重复上述步骤。
n=int(input())
a=list(map(int,input().split()))
for i in range(n-1):#循环n-1次
min_value=a[i]
min_idx=i
for j in range(i,n):#第i次从a[i]到a[n-1]找最小元素
if a[j]< min_value:
min_value=a[j]
min_idx=j
a[i],a[min_idx]=a[min_idx],a[i]#将最小值和最前面的元素交换
print(' '.join(map(str,a)))#输出的为字符串
5 1 4 2 3 5 1 2 3 4 5
插入排序:
算法步骤:
第一个元素看作已排序,从左往右遍历每一个元素。
在已排序元素中,从后往前扫描,如果当前元素大于新元素,则该元素移动到后一位,重复第二步直至找到小于等于新元素则停止。
n=int(input())
a=list(map(int,input().split()))
for i in range(1,n):#循环n-1次
value=a[i]
insert_idx=0
for j in range(i-1,-1,-1):#第i次从后往前找插入的位置
if a[j]> value:#往后挪
a[j+1]=a[j]
else:
insert_idx=j+1
break
a[insert_idx]=value#插入第i个数字
print(' '.join(map(str,a)))
5 5 3 4 2 1 1 2 3 4 5