Python冒泡排序

Posted sam11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python冒泡排序相关的知识,希望对你有一定的参考价值。

Python代码:

"""
冒泡排序(4)

在未排序的数中,通过两两比较[换位]的方式,将最小的数移至首位
N个数排序,则需要执行N-1轮,第1轮比较N-1次,后续每轮比上一轮少比较1次

本例中:
第1轮将0放到正确位置;
第2轮将1放到正确位置;
......
第9轮将8放到正确位置;

此方法中,两个位置数字比较时,两个位置都是变化的
第1轮第1次是位置8、位置9的数字比较,前者大,则互换位置;
第1轮第2次是位置7、位置8的数字比较,前者大,则互换位置;
......
第1轮第9次是位置0、位置1的数字比较,前者大,则互换位置;

第2轮第1次是位置8、位置9的数字比较,前者大,则互换位置;
......
第2轮第8次是位置1、位置2的数字比较,前者大,则互换位置;
......

"""

lst = [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]
print("排序前: %s\r\n" %lst)

#
for i in range(len(lst)-1,0,-1): #[9,8,7,6,5,4,3,2,1]
    print("第%s轮" % (10-i))
    #
    for j in range(len(lst)-1,len(lst)-i-1,-1):
        # 如果前大后小,则交换位置
        if lst[j-1] > lst[j]:
            lst[j-1],lst[j] = lst[j],lst[j-1]
            print("    第%s次 [%s]:%s,[%s]:%s比较 互换 %s" % (9-j+1,j-1,lst[j],j,lst[j-1],lst))
        else:
            print("    第%s次 [%s]:%s,[%s]:%s比较 不变 %s" % (9-j+1,j-1,lst[j-1],j,lst[j],lst))

print("\r\n排序后:  %s" % lst)

 输出结果:

E:\python\algorithm>python3  bubbleSort4.py
排序前: [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]

第1轮
    第1次 [8]:4,[9]:0比较 互换 [3, 6, 9, 1, 8, 7, 2, 5, 0, 4]
    第2次 [7]:5,[8]:0比较 互换 [3, 6, 9, 1, 8, 7, 2, 0, 5, 4]
    第3次 [6]:2,[7]:0比较 互换 [3, 6, 9, 1, 8, 7, 0, 2, 5, 4]
    第4次 [5]:7,[6]:0比较 互换 [3, 6, 9, 1, 8, 0, 7, 2, 5, 4]
    第5次 [4]:8,[5]:0比较 互换 [3, 6, 9, 1, 0, 8, 7, 2, 5, 4]
    第6次 [3]:1,[4]:0比较 互换 [3, 6, 9, 0, 1, 8, 7, 2, 5, 4]
    第7次 [2]:9,[3]:0比较 互换 [3, 6, 0, 9, 1, 8, 7, 2, 5, 4]
    第8次 [1]:6,[2]:0比较 互换 [3, 0, 6, 9, 1, 8, 7, 2, 5, 4]
    第9次 [0]:3,[1]:0比较 互换 [0, 3, 6, 9, 1, 8, 7, 2, 5, 4]
第2轮
    第1次 [8]:5,[9]:4比较 互换 [0, 3, 6, 9, 1, 8, 7, 2, 4, 5]
    第2次 [7]:2,[8]:4比较 不变 [0, 3, 6, 9, 1, 8, 7, 2, 4, 5]
    第3次 [6]:7,[7]:2比较 互换 [0, 3, 6, 9, 1, 8, 2, 7, 4, 5]
    第4次 [5]:8,[6]:2比较 互换 [0, 3, 6, 9, 1, 2, 8, 7, 4, 5]
    第5次 [4]:1,[5]:2比较 不变 [0, 3, 6, 9, 1, 2, 8, 7, 4, 5]
    第6次 [3]:9,[4]:1比较 互换 [0, 3, 6, 1, 9, 2, 8, 7, 4, 5]
    第7次 [2]:6,[3]:1比较 互换 [0, 3, 1, 6, 9, 2, 8, 7, 4, 5]
    第8次 [1]:3,[2]:1比较 互换 [0, 1, 3, 6, 9, 2, 8, 7, 4, 5]
第3轮
    第1次 [8]:4,[9]:5比较 不变 [0, 1, 3, 6, 9, 2, 8, 7, 4, 5]
    第2次 [7]:7,[8]:4比较 互换 [0, 1, 3, 6, 9, 2, 8, 4, 7, 5]
    第3次 [6]:8,[7]:4比较 互换 [0, 1, 3, 6, 9, 2, 4, 8, 7, 5]
    第4次 [5]:2,[6]:4比较 不变 [0, 1, 3, 6, 9, 2, 4, 8, 7, 5]
    第5次 [4]:9,[5]:2比较 互换 [0, 1, 3, 6, 2, 9, 4, 8, 7, 5]
    第6次 [3]:6,[4]:2比较 互换 [0, 1, 3, 2, 6, 9, 4, 8, 7, 5]
    第7次 [2]:3,[3]:2比较 互换 [0, 1, 2, 3, 6, 9, 4, 8, 7, 5]
第4轮
    第1次 [8]:7,[9]:5比较 互换 [0, 1, 2, 3, 6, 9, 4, 8, 5, 7]
    第2次 [7]:8,[8]:5比较 互换 [0, 1, 2, 3, 6, 9, 4, 5, 8, 7]
    第3次 [6]:4,[7]:5比较 不变 [0, 1, 2, 3, 6, 9, 4, 5, 8, 7]
    第4次 [5]:9,[6]:4比较 互换 [0, 1, 2, 3, 6, 4, 9, 5, 8, 7]
    第5次 [4]:6,[5]:4比较 互换 [0, 1, 2, 3, 4, 6, 9, 5, 8, 7]
    第6次 [3]:3,[4]:4比较 不变 [0, 1, 2, 3, 4, 6, 9, 5, 8, 7]
第5轮
    第1次 [8]:8,[9]:7比较 互换 [0, 1, 2, 3, 4, 6, 9, 5, 7, 8]
    第2次 [7]:5,[8]:7比较 不变 [0, 1, 2, 3, 4, 6, 9, 5, 7, 8]
    第3次 [6]:9,[7]:5比较 互换 [0, 1, 2, 3, 4, 6, 5, 9, 7, 8]
    第4次 [5]:6,[6]:5比较 互换 [0, 1, 2, 3, 4, 5, 6, 9, 7, 8]
    第5次 [4]:4,[5]:5比较 不变 [0, 1, 2, 3, 4, 5, 6, 9, 7, 8]
第6轮
    第1次 [8]:7,[9]:8比较 不变 [0, 1, 2, 3, 4, 5, 6, 9, 7, 8]
    第2次 [7]:9,[8]:7比较 互换 [0, 1, 2, 3, 4, 5, 6, 7, 9, 8]
    第3次 [6]:6,[7]:7比较 不变 [0, 1, 2, 3, 4, 5, 6, 7, 9, 8]
    第4次 [5]:5,[6]:6比较 不变 [0, 1, 2, 3, 4, 5, 6, 7, 9, 8]
第7轮
    第1次 [8]:9,[9]:8比较 互换 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    第2次 [7]:7,[8]:8比较 不变 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    第3次 [6]:6,[7]:7比较 不变 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
第8轮
    第1次 [8]:8,[9]:9比较 不变 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    第2次 [7]:7,[8]:8比较 不变 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
第9轮
    第1次 [8]:8,[9]:9比较 不变 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

排序后:  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 =====结束=====

以上是关于Python冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

冒泡排序的python代码实现

python写冒泡排序

[leetcode]排序算法(冒泡排序,选择排序,插入排序,快速排序,计数排序)

python实现时间复杂度平均为N^2的冒泡选择插入排序

python实现时间复杂度平均为N^2的冒泡选择插入排序

python实现时间复杂度平均为N^2的冒泡选择插入排序