zoukankan      html  css  js  c++  java
  • Python冒泡排序(5)

    Python代码:

    """
    冒泡排序(5)
    
    双向冒泡,冒泡排序的一种变形。
    在未排序的数中,每轮找出最小和最大的数分别放到首尾。
    
    本例中:
    第1轮:先将9放到正确位置,再将0放到正确位置;
    第2轮:先将8放到正确位置,再将1放到正确位置;
    第3轮:先将7放到正确位置,再将2放到正确位置;
    第4轮:先将6放到正确位置,再将3放到正确位置;
    第5轮:先将5放到正确位置,再将4放到正确位置;
    
    """
    
    lst = [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]
    print("排序前: %s
    " %lst)
    
    #
    for i in range(int(len(lst)/2)):
        print("第%s轮" % (i+1))
        #
        for m in range(i,len(lst)-i-1):
            # 如果前大后小,则交换位置
            if lst[m] > lst[m+1]:
                lst[m],lst[m+1] = lst[m+1],lst[m]
                print("    右向冒泡第%s次 [%s]:%s,[%s]:%s比较 互换 %s" % (m-i+1,m,lst[m+1],m+1,lst[m],lst))
            else:
                print("    右向冒泡第%s次 [%s]:%s,[%s]:%s比较 不变 %s" % (m-i+1,m,lst[m],m+1,lst[m+1],lst))
        print("
    ")
        #
        for n in range(len(lst)-i-2,i,-1):
            # 如果前大后小,则交换位置
            if lst[n-1] > lst[n]:
                lst[n-1],lst[n] = lst[n],lst[n-1]
                print("    左向冒泡第%s次 [%s]:%s,[%s]:%s比较 互换 %s" % (9-n-i,n-1,lst[n],n,lst[n-1],lst))
            else:
                print("    左向冒泡第%s次 [%s]:%s,[%s]:%s比较 不变 %s" % (9-n-i,n-1,lst[n-1],n,lst[n],lst))
    
    print("
    排序后:  %s" % lst)

    输出结果:

    E:pythonalgorithm>python3 bubbleSort5.py
    排序前: [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]
    
    第1轮
        右向冒泡第1次 [0]:3,[1]:6比较 不变 [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]
        右向冒泡第2次 [1]:6,[2]:9比较 不变 [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]
        右向冒泡第3次 [2]:9,[3]:1比较 互换 [3, 6, 1, 9, 8, 7, 2, 5, 4, 0]
        右向冒泡第4次 [3]:9,[4]:8比较 互换 [3, 6, 1, 8, 9, 7, 2, 5, 4, 0]
        右向冒泡第5次 [4]:9,[5]:7比较 互换 [3, 6, 1, 8, 7, 9, 2, 5, 4, 0]
        右向冒泡第6次 [5]:9,[6]:2比较 互换 [3, 6, 1, 8, 7, 2, 9, 5, 4, 0]
        右向冒泡第7次 [6]:9,[7]:5比较 互换 [3, 6, 1, 8, 7, 2, 5, 9, 4, 0]
        右向冒泡第8次 [7]:9,[8]:4比较 互换 [3, 6, 1, 8, 7, 2, 5, 4, 9, 0]
        右向冒泡第9次 [8]:9,[9]:0比较 互换 [3, 6, 1, 8, 7, 2, 5, 4, 0, 9]
    
    
        左向冒泡第1次 [7]:4,[8]:0比较 互换 [3, 6, 1, 8, 7, 2, 5, 0, 4, 9]
        左向冒泡第2次 [6]:5,[7]:0比较 互换 [3, 6, 1, 8, 7, 2, 0, 5, 4, 9]
        左向冒泡第3次 [5]:2,[6]:0比较 互换 [3, 6, 1, 8, 7, 0, 2, 5, 4, 9]
        左向冒泡第4次 [4]:7,[5]:0比较 互换 [3, 6, 1, 8, 0, 7, 2, 5, 4, 9]
        左向冒泡第5次 [3]:8,[4]:0比较 互换 [3, 6, 1, 0, 8, 7, 2, 5, 4, 9]
        左向冒泡第6次 [2]:1,[3]:0比较 互换 [3, 6, 0, 1, 8, 7, 2, 5, 4, 9]
        左向冒泡第7次 [1]:6,[2]:0比较 互换 [3, 0, 6, 1, 8, 7, 2, 5, 4, 9]
        左向冒泡第8次 [0]:3,[1]:0比较 互换 [0, 3, 6, 1, 8, 7, 2, 5, 4, 9]
    第2轮
        右向冒泡第1次 [1]:3,[2]:6比较 不变 [0, 3, 6, 1, 8, 7, 2, 5, 4, 9]
        右向冒泡第2次 [2]:6,[3]:1比较 互换 [0, 3, 1, 6, 8, 7, 2, 5, 4, 9]
        右向冒泡第3次 [3]:6,[4]:8比较 不变 [0, 3, 1, 6, 8, 7, 2, 5, 4, 9]
        右向冒泡第4次 [4]:8,[5]:7比较 互换 [0, 3, 1, 6, 7, 8, 2, 5, 4, 9]
        右向冒泡第5次 [5]:8,[6]:2比较 互换 [0, 3, 1, 6, 7, 2, 8, 5, 4, 9]
        右向冒泡第6次 [6]:8,[7]:5比较 互换 [0, 3, 1, 6, 7, 2, 5, 8, 4, 9]
        右向冒泡第7次 [7]:8,[8]:4比较 互换 [0, 3, 1, 6, 7, 2, 5, 4, 8, 9]
    
    
        左向冒泡第1次 [6]:5,[7]:4比较 互换 [0, 3, 1, 6, 7, 2, 4, 5, 8, 9]
        左向冒泡第2次 [5]:2,[6]:4比较 不变 [0, 3, 1, 6, 7, 2, 4, 5, 8, 9]
        左向冒泡第3次 [4]:7,[5]:2比较 互换 [0, 3, 1, 6, 2, 7, 4, 5, 8, 9]
        左向冒泡第4次 [3]:6,[4]:2比较 互换 [0, 3, 1, 2, 6, 7, 4, 5, 8, 9]
        左向冒泡第5次 [2]:1,[3]:2比较 不变 [0, 3, 1, 2, 6, 7, 4, 5, 8, 9]
        左向冒泡第6次 [1]:3,[2]:1比较 互换 [0, 1, 3, 2, 6, 7, 4, 5, 8, 9]
    第3轮
        右向冒泡第1次 [2]:3,[3]:2比较 互换 [0, 1, 2, 3, 6, 7, 4, 5, 8, 9]
        右向冒泡第2次 [3]:3,[4]:6比较 不变 [0, 1, 2, 3, 6, 7, 4, 5, 8, 9]
        右向冒泡第3次 [4]:6,[5]:7比较 不变 [0, 1, 2, 3, 6, 7, 4, 5, 8, 9]
        右向冒泡第4次 [5]:7,[6]:4比较 互换 [0, 1, 2, 3, 6, 4, 7, 5, 8, 9]
        右向冒泡第5次 [6]:7,[7]:5比较 互换 [0, 1, 2, 3, 6, 4, 5, 7, 8, 9]
    
    
        左向冒泡第1次 [5]:4,[6]:5比较 不变 [0, 1, 2, 3, 6, 4, 5, 7, 8, 9]
        左向冒泡第2次 [4]:6,[5]:4比较 互换 [0, 1, 2, 3, 4, 6, 5, 7, 8, 9]
        左向冒泡第3次 [3]:3,[4]:4比较 不变 [0, 1, 2, 3, 4, 6, 5, 7, 8, 9]
        左向冒泡第4次 [2]:2,[3]:3比较 不变 [0, 1, 2, 3, 4, 6, 5, 7, 8, 9]
    第4轮
        右向冒泡第1次 [3]:3,[4]:4比较 不变 [0, 1, 2, 3, 4, 6, 5, 7, 8, 9]
        右向冒泡第2次 [4]:4,[5]:6比较 不变 [0, 1, 2, 3, 4, 6, 5, 7, 8, 9]
        右向冒泡第3次 [5]:6,[6]:5比较 互换 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    
        左向冒泡第1次 [4]:4,[5]:5比较 不变 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        左向冒泡第2次 [3]:3,[4]:4比较 不变 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    第5轮
        右向冒泡第1次 [4]:4,[5]:5比较 不变 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    
    
    排序后:  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

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

  • 相关阅读:
    【掉下巴】枪的制造现场
    不引入第三个变量交换两个变量的方法
    [转]科学计算经典算法
    [小练eVC]常用控件之微调按钮
    【收购】LSI 40亿美元并购Agere
    VB6.0不支持鼠标滚轮的解决办法
    一个简单的BP网络C语言程序
    [转]想成为嵌入式程序员应知道的0x10个基本问题
    [zt]关于左值"lvalue"和右值"rvalue"的一点理解
    [掉下巴]细数非洲大山的肘下亡魂
  • 原文地址:https://www.cnblogs.com/sam11/p/8350656.html
Copyright © 2011-2022 走看看