冒泡排序:用两层for循环,每次比较相邻元素,第一次循环i的范围是 [0,n),第二次循环j的范围是 [0,n-i-1)。
n-i-1:每次过后都会有i个元素被排序完成。
例: 5 6 2 3 1对这个数组进行排序
i = 0 时j范围是[0,4) 最多比较到3位置 然后比较j和j+1进行比较 得到5 2 3 1 6
i = 1 时j范围是[0,3) 最多比较到2位置 然后比较j和j+1进行比较 得到2 3 1 5 6
i = 2 时j范围是[0,2) 最多比较到1位置 然后比较j和j+1进行比较 得到2 1 3 5 6
i = 3 时j范围是[0,1) 最多比较到1位置 然后比较j和j+1进行比较 得到1 2 3 5 6
a = [5, 6, 2, 3, 1]
for i in range(len(a)):
for j in range(len(a)-i-1):
if a[j] > a[j+1]:
a[j],a[j+1] = a[j+1],a[j]
print(a)
例题
n = int(input())#input拿到的是字符串,要强制转换成整数
a = list(map(int,input().split())) #分割成多个字符串然后转成整数,再变成列表
for i in range(len(a)):
for j in range(len(a)-i-1):
if a[j] > a[j+1]:
a[j],a[j+1] = a[j+1],a[j]
for i in a:
print(i, end=" ")
但这种方式时间复杂度过大,在python中有sort()函数可用来排序 法一
n = int(input())
a = list(map(int,input().split()))
a.sort()#对a进行原地排序
for i in range(n):
print(a[i],end=" ")
法二
n = int(input())
a = list(map(int,input().split()))
b = sorted(a)#生成新列表,a不变
for i in range(n):
print(b[i],end= " ")
加了去重的条件 使用set()
n = int(input())
a = list(map(int,input().split()))
a = list(set(a))
a.sort()
print(len(a))#输出长度
for i in range(len(a)):#注意不是n 因为已经有去掉的元素了
print(a[i],end=" ")