Python_冒泡排序的简单说明
冒泡排序:
s = [-1,1,-2,2,3,-3]
第一步:交换2个元素
交换的方法1:(仅适用Python)
a,b = b,a
交换的方法2:
temp=b#tmp为中间变量,可以理解为介质
b=a
a=temp
第二步:我要找到这个list中最大的元素,把它放到列表的最后位置
位置0和位置1比,如果大,交换,否则不换
位置1和位置2位置比,如果大,交换,否则不换
位置2和位置3位置比,如果大,交换,否则不换
...
位置4和和位置5位置比,如果大,交换,否则不换
1)基于坐标做遍历,最后一个元素不需要做遍历动作
遍历的反射:
1 把元素逐一取出来
2 基于坐标位置逐一取出来,i,i+1
将最大的元素放到最后:
s = [-1,1,-2,2,3,-3]
for i in range(len(s)-1):
if s[i] > s[i+1]:
temp=s[i]
s[i]=s[i+1]
s[i+1]=temp
print (s)
结果如下:
>>> s = [-1,1,-2,2,3,-3] >>> for i in range(len(s)-1): ... if s[i] > s[i+1]: ... temp=s[i] ... s[i]=s[i+1] ... s[i+1]=temp ... >>> print (s) [-1, -2, 1, 2, -3, 3] >>>
2)使用if当前元素和后一个元素做比对,如果大了,交换,否则啥也不干
把最后1个元素我不处理了,把之前的所有数,在做相同工作,第二大
s = [-1,1,-2,2,3,-3]
for i in range(len(s)-1-i):
if s[i] > s[i+1]:
temp=s[i]
s[i]=s[i+1]
s[i+1]=temp
print (s)
结果如下:
>>> s = [-1,1,-2,2,3,-3] >>> for i in range(len(s)-1-i): ... if s[i] > s[i+1]: ... temp=s[i] ... s[i]=s[i+1] ... s[i+1]=temp ... >>> print (s) [-1, 1, -2, 2, 3, -3] >>>
把最后2个元素我不处理了,把之前的所有数,在做相同工作,第三大
把最后3个元素我不处理了,把之前的所有数,在做相同工作,第四大
.....
把最后n-1个元素我不处理了,把之前的所有数,在做相同工作,第n大
s = [-1,1,-2,2,3,-3]
for j in range(len(s)-1):
for i in range(len(s)-1-j):
if s[i] > s[i+1]:
temp=s[i]
s[i]=s[i+1]
s[i+1]=temp
print(s)
将所有元素进行排序,结果如下:
>>> s = [-1,1,-2,2,3,-3] >>> for j in range(len(s)-1): ... for i in range(len(s)-1-j): ... if s[i] > s[i+1]: ... temp=s[i] ... s[i]=s[i+1] ... s[i+1]=temp ... >>> print(s) [-3, -2, -1, 1, 2, 3] >>>