冒泡排序及其效率分析(无聊搞来玩玩)
算法:即解决问题的思路(或者说解决问题的步骤)
冒泡排序介绍:
冒泡排序(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
版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任