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

    Python代码:

    """
    冒泡排序(3)
    
    在未排序的数中,通过两两比较[换位]的方式,将最大的数移至末尾
    N个数排序,则需要执行N-1轮,第1轮比较N-1次,后续每轮比上一轮少比较1次
    
    本例中:
    第1轮将9放到正确位置;
    第2轮将8放到正确位置;
    ......
    第9轮将1放到正确位置;
    
    此方法中,两个位置数字比较时,有一个位置是不变的
    第1轮第1次是位置8、位置9的数字比较,前者大,则互换位置;
    第1轮第2次是位置7、位置9的数字比较,前者大,则互换位置;
    ......
    第1轮第9次是位置0、位置9的数字比较,前者大,则互换位置;
    
    第2轮第1次是位置7、位置8的数字比较,前者大,则互换位置;
    ......
    第2轮第8次是位置0、位置8的数字比较,前者大,则互换位置;
    ......
    
    """
    
    lst = [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]
    print("排序前: %s
    " %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(i-1,-1,-1):
            # 如果前大后小,则交换位置
            if lst[j] > lst[i]:
                lst[i],lst[j] = lst[j],lst[i]
                print("    第%s次 [%s]:%s,[%s]:%s比较 互换 %s" % (i-j,j,lst[i],i,lst[j],lst))
            else:
                print("    第%s次 [%s]:%s,[%s]:%s比较 不变 %s" % (i-j,j,lst[j],i,lst[i],lst))
    
    print("
    排序后:  %s" % lst)

    输出结果:

    E:pythonalgorithm>python3  bubbleSort3.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,[9]:4比较 互换 [3, 6, 9, 1, 8, 7, 2, 4, 0, 5]
        第3次 [6]:2,[9]:5比较 不变 [3, 6, 9, 1, 8, 7, 2, 4, 0, 5]
        第4次 [5]:7,[9]:5比较 互换 [3, 6, 9, 1, 8, 5, 2, 4, 0, 7]
        第5次 [4]:8,[9]:7比较 互换 [3, 6, 9, 1, 7, 5, 2, 4, 0, 8]
        第6次 [3]:1,[9]:8比较 不变 [3, 6, 9, 1, 7, 5, 2, 4, 0, 8]
        第7次 [2]:9,[9]:8比较 互换 [3, 6, 8, 1, 7, 5, 2, 4, 0, 9]
        第8次 [1]:6,[9]:9比较 不变 [3, 6, 8, 1, 7, 5, 2, 4, 0, 9]
        第9次 [0]:3,[9]:9比较 不变 [3, 6, 8, 1, 7, 5, 2, 4, 0, 9]
    第2轮
        第1次 [7]:4,[8]:0比较 互换 [3, 6, 8, 1, 7, 5, 2, 0, 4, 9]
        第2次 [6]:2,[8]:4比较 不变 [3, 6, 8, 1, 7, 5, 2, 0, 4, 9]
        第3次 [5]:5,[8]:4比较 互换 [3, 6, 8, 1, 7, 4, 2, 0, 5, 9]
        第4次 [4]:7,[8]:5比较 互换 [3, 6, 8, 1, 5, 4, 2, 0, 7, 9]
        第5次 [3]:1,[8]:7比较 不变 [3, 6, 8, 1, 5, 4, 2, 0, 7, 9]
        第6次 [2]:8,[8]:7比较 互换 [3, 6, 7, 1, 5, 4, 2, 0, 8, 9]
        第7次 [1]:6,[8]:8比较 不变 [3, 6, 7, 1, 5, 4, 2, 0, 8, 9]
        第8次 [0]:3,[8]:8比较 不变 [3, 6, 7, 1, 5, 4, 2, 0, 8, 9]
    第3轮
        第1次 [6]:2,[7]:0比较 互换 [3, 6, 7, 1, 5, 4, 0, 2, 8, 9]
        第2次 [5]:4,[7]:2比较 互换 [3, 6, 7, 1, 5, 2, 0, 4, 8, 9]
        第3次 [4]:5,[7]:4比较 互换 [3, 6, 7, 1, 4, 2, 0, 5, 8, 9]
        第4次 [3]:1,[7]:5比较 不变 [3, 6, 7, 1, 4, 2, 0, 5, 8, 9]
        第5次 [2]:7,[7]:5比较 互换 [3, 6, 5, 1, 4, 2, 0, 7, 8, 9]
        第6次 [1]:6,[7]:7比较 不变 [3, 6, 5, 1, 4, 2, 0, 7, 8, 9]
        第7次 [0]:3,[7]:7比较 不变 [3, 6, 5, 1, 4, 2, 0, 7, 8, 9]
    第4轮
        第1次 [5]:2,[6]:0比较 互换 [3, 6, 5, 1, 4, 0, 2, 7, 8, 9]
        第2次 [4]:4,[6]:2比较 互换 [3, 6, 5, 1, 2, 0, 4, 7, 8, 9]
        第3次 [3]:1,[6]:4比较 不变 [3, 6, 5, 1, 2, 0, 4, 7, 8, 9]
        第4次 [2]:5,[6]:4比较 互换 [3, 6, 4, 1, 2, 0, 5, 7, 8, 9]
        第5次 [1]:6,[6]:5比较 互换 [3, 5, 4, 1, 2, 0, 6, 7, 8, 9]
        第6次 [0]:3,[6]:6比较 不变 [3, 5, 4, 1, 2, 0, 6, 7, 8, 9]
    第5轮
        第1次 [4]:2,[5]:0比较 互换 [3, 5, 4, 1, 0, 2, 6, 7, 8, 9]
        第2次 [3]:1,[5]:2比较 不变 [3, 5, 4, 1, 0, 2, 6, 7, 8, 9]
        第3次 [2]:4,[5]:2比较 互换 [3, 5, 2, 1, 0, 4, 6, 7, 8, 9]
        第4次 [1]:5,[5]:4比较 互换 [3, 4, 2, 1, 0, 5, 6, 7, 8, 9]
        第5次 [0]:3,[5]:5比较 不变 [3, 4, 2, 1, 0, 5, 6, 7, 8, 9]
    第6轮
        第1次 [3]:1,[4]:0比较 互换 [3, 4, 2, 0, 1, 5, 6, 7, 8, 9]
        第2次 [2]:2,[4]:1比较 互换 [3, 4, 1, 0, 2, 5, 6, 7, 8, 9]
        第3次 [1]:4,[4]:2比较 互换 [3, 2, 1, 0, 4, 5, 6, 7, 8, 9]
        第4次 [0]:3,[4]:4比较 不变 [3, 2, 1, 0, 4, 5, 6, 7, 8, 9]
    第7轮
        第1次 [2]:1,[3]:0比较 互换 [3, 2, 0, 1, 4, 5, 6, 7, 8, 9]
        第2次 [1]:2,[3]:1比较 互换 [3, 1, 0, 2, 4, 5, 6, 7, 8, 9]
        第3次 [0]:3,[3]:2比较 互换 [2, 1, 0, 3, 4, 5, 6, 7, 8, 9]
    第8轮
        第1次 [1]:1,[2]:0比较 互换 [2, 0, 1, 3, 4, 5, 6, 7, 8, 9]
        第2次 [0]:2,[2]:1比较 互换 [1, 0, 2, 3, 4, 5, 6, 7, 8, 9]
    第9轮
        第1次 [0]:1,[1]:0比较 互换 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    排序后:  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

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

  • 相关阅读:
    基于OEA框架的客户化设计(三) “插件式”DLL
    小技巧、小工具列表
    OEA中的AutoUI重构(3) 评审会议后的设计
    基于OEA框架的客户化设计(一) 总体设计
    数据层扩展包EFCachingProvider 总结
    中国软件工程大会总结
    性能优化总结(二):聚合SQL
    招 .Net 开发人员 (北京) 已招满
    War3Share开源
    正则表达式:匹配字符串中除了"abc"以外的所有其它部分
  • 原文地址:https://www.cnblogs.com/sam11/p/8342578.html
Copyright © 2011-2022 走看看