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

    冒泡排序:通过与相邻元素比较的方式每次将一个数归位

    Python代码: 

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

    输出结果:

    E:\python\algorithm>python3 bubbleSort.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]
    第2轮
        第1次 [0]:3,[1]:6比较 不变 [3, 6, 1, 8, 7, 2, 5, 4, 0, 9]
        第2次 [1]:6,[2]:1比较 互换 [3, 1, 6, 8, 7, 2, 5, 4, 0, 9]
        第3次 [2]:6,[3]:8比较 不变 [3, 1, 6, 8, 7, 2, 5, 4, 0, 9]
        第4次 [3]:8,[4]:7比较 互换 [3, 1, 6, 7, 8, 2, 5, 4, 0, 9]
        第5次 [4]:8,[5]:2比较 互换 [3, 1, 6, 7, 2, 8, 5, 4, 0, 9]
        第6次 [5]:8,[6]:5比较 互换 [3, 1, 6, 7, 2, 5, 8, 4, 0, 9]
        第7次 [6]:8,[7]:4比较 互换 [3, 1, 6, 7, 2, 5, 4, 8, 0, 9]
        第8次 [7]:8,[8]:0比较 互换 [3, 1, 6, 7, 2, 5, 4, 0, 8, 9]
    第3轮
        第1次 [0]:3,[1]:1比较 互换 [1, 3, 6, 7, 2, 5, 4, 0, 8, 9]
        第2次 [1]:3,[2]:6比较 不变 [1, 3, 6, 7, 2, 5, 4, 0, 8, 9]
        第3次 [2]:6,[3]:7比较 不变 [1, 3, 6, 7, 2, 5, 4, 0, 8, 9]
        第4次 [3]:7,[4]:2比较 互换 [1, 3, 6, 2, 7, 5, 4, 0, 8, 9]
        第5次 [4]:7,[5]:5比较 互换 [1, 3, 6, 2, 5, 7, 4, 0, 8, 9]
        第6次 [5]:7,[6]:4比较 互换 [1, 3, 6, 2, 5, 4, 7, 0, 8, 9]
        第7次 [6]:7,[7]:0比较 互换 [1, 3, 6, 2, 5, 4, 0, 7, 8, 9]
    第4轮
        第1次 [0]:1,[1]:3比较 不变 [1, 3, 6, 2, 5, 4, 0, 7, 8, 9]
        第2次 [1]:3,[2]:6比较 不变 [1, 3, 6, 2, 5, 4, 0, 7, 8, 9]
        第3次 [2]:6,[3]:2比较 互换 [1, 3, 2, 6, 5, 4, 0, 7, 8, 9]
        第4次 [3]:6,[4]:5比较 互换 [1, 3, 2, 5, 6, 4, 0, 7, 8, 9]
        第5次 [4]:6,[5]:4比较 互换 [1, 3, 2, 5, 4, 6, 0, 7, 8, 9]
        第6次 [5]:6,[6]:0比较 互换 [1, 3, 2, 5, 4, 0, 6, 7, 8, 9]
    第5轮
        第1次 [0]:1,[1]:3比较 不变 [1, 3, 2, 5, 4, 0, 6, 7, 8, 9]
        第2次 [1]:3,[2]:2比较 互换 [1, 2, 3, 5, 4, 0, 6, 7, 8, 9]
        第3次 [2]:3,[3]:5比较 不变 [1, 2, 3, 5, 4, 0, 6, 7, 8, 9]
        第4次 [3]:5,[4]:4比较 互换 [1, 2, 3, 4, 5, 0, 6, 7, 8, 9]
        第5次 [4]:5,[5]:0比较 互换 [1, 2, 3, 4, 0, 5, 6, 7, 8, 9]
    第6轮
        第1次 [0]:1,[1]:2比较 不变 [1, 2, 3, 4, 0, 5, 6, 7, 8, 9]
        第2次 [1]:2,[2]:3比较 不变 [1, 2, 3, 4, 0, 5, 6, 7, 8, 9]
        第3次 [2]:3,[3]:4比较 不变 [1, 2, 3, 4, 0, 5, 6, 7, 8, 9]
        第4次 [3]:4,[4]:0比较 互换 [1, 2, 3, 0, 4, 5, 6, 7, 8, 9]
    第7轮
        第1次 [0]:1,[1]:2比较 不变 [1, 2, 3, 0, 4, 5, 6, 7, 8, 9]
        第2次 [1]:2,[2]:3比较 不变 [1, 2, 3, 0, 4, 5, 6, 7, 8, 9]
        第3次 [2]:3,[3]:0比较 互换 [1, 2, 0, 3, 4, 5, 6, 7, 8, 9]
    第8轮
        第1次 [0]:1,[1]:2比较 不变 [1, 2, 0, 3, 4, 5, 6, 7, 8, 9]
        第2次 [1]:2,[2]:0比较 互换 [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]

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

  • 相关阅读:
    指针加减法运算的“定义域”
    将main()进行到底
    带命令行参数的main函数的误解[到处转载的垃圾]
    亡羊补牢还是越错越远——“C99允许在函数中的复合语句中定义变量”
    会错意表错情,搭错车上错床——“度日如年”的故事及“feof()”的故事
    狗屁不通的《C语言详解:什么是表达式、语句、表达式语句?》
    已知两边长求三角形面积
    用驴子拖宝马——怎样滥用结构体
    糟蹋好题——魔方阵问题
    怎样建立链表并同时造成内存泄露
  • 原文地址:https://www.cnblogs.com/sam11/p/8334405.html
Copyright © 2011-2022 走看看