冒泡排序及其效率分析(无聊搞来玩玩)

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

冒泡排序介绍:

冒泡排序(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

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

原文地址:https://www.cnblogs.com/rianley/p/9132835.html