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]
>>>

 

posted @ 2018-10-07 12:22  翻滚的小强  阅读(170)  评论(0编辑  收藏  举报