冒泡排序

定义

列表每两个相邻的数,如果前面比后面大,则交换这两个数。一趟排序完成后,则无序区减少一个数,有序区增加一个数。

算法实现

def bubble_sort(li):
    for i in range(len(li)):  # 每个列表最多需要重复n-1次
        for j in range(n-1-i):  # 每次指针都要走n-1-i次,后续附图说明
            if li[j] > li [j+1]:
                li[j], li[j+1] = li[j + 1], li[j]
    return li

li = [3,9,7,4,1,2,5,6,8]
print(bubble_sort(li))

如上图所示,是第0次(从0开始)的循环列表。可以看见,在这次循环中,指针需要走n-1次(这里n为9,所以是走8次)。

后续的话,每次循环列表,则指针都要在上一次的基础之上减少一次。

是因为,在每次循环列表,最后都会确定一个最大的数(这是有冒泡排序的原理决定的)。所以在下一次循环的时候,就没有走到上一次循环测量的最后一个数。

就如第0次,由于冒泡排序的定义就决定了最后一个位置指针不需要经过,所以第0次指针就只需要走n-1次。
到第1次,就只需要走n-1-1次。
第二次,就是n-1-2次。

posted @ 2022-04-02 11:48  尘。哀  阅读(39)  评论(0)    收藏  举报