zoukankan      html  css  js  c++  java
  • 冒泡排序及其效率分析(无聊搞来玩玩)

    算法:即解决问题的思路(或者说解决问题的步骤)

    冒泡排序介绍:

    冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。
    它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
    这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。

    冒泡一(初级一版):

    #_*_coding:utf-8_*_
    #author:rianley
    '''
     冒泡排序
    '''
     
    import random,time
     
     
    l=range(1000)
    print(l)
     
    random.shuffle(l)
    print(l)
     
     
    def timer(func):
        def _wrapper(*args,**kwargs):
            start_time=time.time()
            res=func(*args,**kwargs)
            stop_time=time.time()
            print('the func %s run time is %s' %(func,stop_time-start_time))
        return _wrapper
     
    @timer
    def bubble_sort(l):
        for j in reversed(range(len(l))):
            for i in range(len(l)-1):
                if l[i] > l[i+1]:
                    tmp=l[i]
                    l[i]=l[i+1]
                    l[i+1]=tmp
                    #l[i],l[i+1]=l[i+1],l[i]
        print(l)
     
     
    bubble_sort(l)
     
    运行:
     
    the func bubble_sort run time is 0.110095024109
    

      

    冒泡排序(改进:减少算法执行频度)

    #_*_coding:utf-8_*_
    # author: rianley
    '''
     冒泡排序
    '''
     
    import random,time
     
     
    l=range(1000)
    print(l)
     
    random.shuffle(l)
    print(l)
     
     
    def timer(func):
        def _wrapper(*args,**kwargs):
            start_time=time.time()
            res=func(*args,**kwargs)
            stop_time=time.time()
            print('the func %s run time is %s' %(func.__name__,stop_time-start_time))
        return _wrapper
     
    @timer
    def bubble_sort(l):
        for j in reversed(range(len(l))):
            for i in range(len(l)-1):
                if l[i] > l[i+1]:
                    l[i],l[i+1]=l[i+1],l[i]
        print(l)
     
     
    bubble_sort(l)
     
     
    运行:
    the func bubble_sort run time is 0.105001926422
    

      

    冒泡排序(改进:循环条件不要进行运算操作)

    #_*_coding:utf-8_*_
    #author:rianley
    '''
     冒泡排序
    '''
     
    import random,time
     
    l=range(1000)
     
    print(l)
    random.shuffle(l)
    print(l)
     
     
     
    def timer(func):
        def _wrapper(*args,**kwargs):
            start_time=time.time()
            res=func(*args,**kwargs)
            stop_time=time.time()
            print('the func %s run time is %s' %(func.__name__,stop_time-start_time))
            return res
        return _wrapper
     
    @timer
    def bubble_sort(l):
        l1 = reversed(range(len(l)))
        l2 = range(len(l) - 1)
        for j in l1:
            for i in l2:
                if l[i] > l[i+1]:
                    l[i],l[i+1]=l[i+1],l[i]
     
        print(l)
     
    bubble_sort(l)
     
    运行:
    the func bubble_sort run time is 0.0980820655823  

    持续更新中......

    欢迎加入程序员自我修养群:687226766

    版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任

  • 相关阅读:
    java.lang.IllegalStateException: Cannot get a STRING value from a NUMERIC cell
    spring boot 启动报:Composite-id class must implement Serializable: xxx错误
    IntelliJ IDEA 中使用region代码折叠
    JSON parse error: Cannot deserialize value of type `java.time.LocalDateTime` from String
    MySQL生成UUID
    PowerDesigner设计表时显示注释列Comment,Columns中没有Comment的解决办法
    使用PowerDesigner创建物理模型并生成SQL语句在MySQL中生成表
    IMP-00003: 遇到 ORACLE 错误 959 ORA-00959: 表空间 '' 不存在
    SP2-0734: 未知的命令开头 “IMP ”
    使用imp命令和exp命令对oracle数据库进行导入导出操作
  • 原文地址:https://www.cnblogs.com/rianley/p/9132835.html
Copyright © 2011-2022 走看看