zoukankan      html  css  js  c++  java
  • py_冒泡排序

    import random
    """
    排序:将一组无序记录序列调整为有序记录序列
    列表排序:将无序列表调整为有序列表
        输入:列表
        输出:有序列表
    升序与降序
    内置函数sort()
    """
    #冒泡排序 bubble Sort
    #1、列表每两个相邻的两个数,若前面比后面的大,则交换这个数
    #2、一趟排序完成后,则无序列表减少一个数,有序区增加一个数 ps 循环一次会筛选出最大值放置有序区,剩余无序区再循环
    def bubble_Sort(li):
        for i in range(len(li) - 1):# 第一次循环筛选出最大值
            for j in range(len(li) -i -1):
                if li[j] > li[j+1]:#--升序 
               #if li[j] < li[j+1] -----降序
                    li[j],li[j+1] = li[j+1],li[j]
            print (li)
    #生成100个0-1000的随机数的列表,
    #li = [random.randint(0,100) for i in range(10)]
    """li = [2,5,4,6,3,1,8,9,7]
    print(li)
    print("分割线--------------------")
    bubble_Sort(li)
    print(li)"""
    
    """
    [2, 5, 4, 6, 3, 1, 8, 9, 7] ----------原列表
    分割线--------------------
    [2, 4, 5, 3, 1, 6, 8, 7, 9]
    [2, 4, 3, 1, 5, 6, 7, 8, 9]
    [2, 3, 1, 4, 5, 6, 7, 8, 9]
    [2, 1, 3, 4, 5, 6, 7, 8, 9]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    """
    
    #冒泡优化,当一次循环没有发生任何交换,那么就认为列表已经被排好序了,就结束
    def bubble_Sort2(li):
        for i in range(len(li) - 1):# 第一次循环筛选出最大值
            exchange = False
            for j in range(len(li) -i -1):
                if li[j] > li[j+1]:#--升序 
               #if li[j] < li[j+1] -----降序
                    li[j],li[j+1] = li[j+1],li[j]
                    exchange = True
            print (li)
            if not exchange:
                return
    li2 = [2,5,4,6,3,1,8,9,7]
    print(li2)
    print("分割线--------------------")
    bubble_Sort2(li2)
    print(li2)
    

      

  • 相关阅读:
    让ios支持openssl
    数组
    NSValue
    音频
    NSObject分类
    NSJSONSerialization
    Java并发编程-深入探讨synchronized实现原理
    设计模式-挖掘工厂模式应用场景-全面分析工厂模式原理
    Spring插件安装
    Java并发编程-深入Java同步器AQS原理与应用-线程锁必备知识点
  • 原文地址:https://www.cnblogs.com/c-jw/p/12575346.html
Copyright © 2011-2022 走看看