一、冒泡排序
介绍:
冒泡排序的原理非常简单,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
其实就是一轮排一个,比如: 第一次,第一个和后面的比较,如果大于,就向后移动,就像冒泡一样,一轮冒一个泡
步骤:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对第0个到第n-1个数据做同样的工作。这时,最大的数就“浮”到了数组最后的位置上。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
首先:一个计时装饰器,这个没有必要写,是本人用来比较时间用的,和冒泡算法无关
import random
import time
def outer(f):
def inner(lst):
t1 = time.time()
f(lst)
print(time.time()-t1)
return inner
冒泡排序
@outer
def BubbleSort(lst):
#生成1000个数并打乱
n = len(lst)
for i in range(n):
for j in range(1,n-i):
if lst[j-1] > lst[j] :
lst[j-1],lst[j] = lst[j],lst[j-1]
print(lst)
优化:
思路一 :
某一趟遍历没有数据交换,则说明已经排好序了,直接退出循