Python 冒泡与快速排序的效率
冒泡排序算法的代码如下:
def maopao_sort(array):
num = len(array)
for i in range(1,num):
for j in range(num-i):
if array[j]>array[j+1]:
t=array[j]
array[j]=array[j+1]
array[j+1]=t
return array
快速排序的代码如下:
def quick_sort(data):
if len(data) >= 2: # 递归入口及出口
mid = data[len(data) // 2] # 选取基准值,也可以选取第一个或最后一个元素
# " // "来表示整数除法,返回不大于结果的一个最大的整数
# left, right = [], [] # 定义基准值左右两侧的列表
left=[]
right=[]
data.remove(mid) # 从原始数组中移除基准值
for num in data:
if num >= mid:
right.append(num)
else:
left.append(num)
return quick_sort(left) + [mid] + quick_sort(right)
else:
return data
其中def定义了2个函数,一个用冒泡算法对数组排序,一个用了快速排序的方法对数组排序, 通过time.clock()来获取掉函数的起始时间和结束时间,差值就是执行这个函数的时间
start =time.clock()
quick_sort(array)
end = time.clock()
print('快速排序:',end-start)
完整代码如下
import random
import time
# 快速排序的函数
def quick_sort(data):
if len(data) >= 2: # 递归入口及出口
mid = data[len(data) // 2] # 选取基准值,也可以选取第一个或最后一个元素
# " // "来表示整数除法,返回不大于结果的一个最大的整数
# left, right = [], [] # 定义基准值左右两侧的列表
left=[]
right=[]
data.remove(mid) # 从原始数组中移除基准值
for num in data:
if num >= mid:
right.append(num)
else:
left.append(num)
return quick_sort(left) + [mid] + quick_sort(right)
else:
return data
# 冒泡排序的函数
def maopao_sort(array):
num = len(array)
for i in range(1,num):
for j in range(num-i):
if array[j]>array[j+1]:
t=array[j]
array[j]=array[j+1]
array[j+1]=t
return array
# 定义了一个1-100(包含1和100)的随机数的数组,该数组有100个元素
array = [random.randint(1, 100) for i in range(100)]
# 通过time.clock()来获取掉函数的起始时间和结束时间,差值就是执行这个函数的时间
start =time.clock()
quick_sort(array)
end = time.clock()
# print(quick_sort(array))
start1 =time.clock()
maopao_sort(array)
end1 = time.clock()
print('快速排序:',end-start)
print('冒泡排序:',end1-start1)
结果:
快速排序: 0.00016488390573084902
冒泡排序: 0.0012124078027864046
有意思的是每次运行结果后时间是不一样的,但是能看出来快速排序效率要比冒泡高