from random import randint
import time
# 使用快速排序(递归)
def qsort(arr):
# 少于2个则直接返回序列
if len(arr) < 2:
return arr
else:
qiov = arr[0]
less = [x for x in arr[1:] if x <= qiov]
greater = [x for x in arr[1:] if x > qiov]
return qsort(less) + [qiov] + qsort(greater)
# 使用冒泡排序
def bubble(arr):
for i in range(0, len(arr)+1):
for j in range(i, len(arr)):
if a[i] > a[j]:
temp = a[i]
a[i] = a[j]
a[j] = temp
return arr
all_time = 0
# 进行100次冒泡排序,计算平均排序时间
for i in range(100):
# 生成1000个一万以内的随机数
a = [randint(0, 10000) for x in range(1000)]
start = time.time()
# b = qsort(a)
b = bubble(a)
end = time.time()
time_count = end - start
all_time += time_count
print("1000个随机数,冒泡排序平均时间为:%06f" % (all_time/100))
all_time = 0
# 进行100次快速排序,计算平均排序时间
for i in range(100):
# 生成1000个一万以内的随机数
a = [randint(0, 10000) for x in range(1000)]
start = time.time()
b = qsort(a)
# b = bubble(a)
end = time.time()
time_count = end - start
all_time += time_count
print("1000个随机数,快速排序(递归)平均时间为:%06f" % (all_time/100))
以下是测试结果
C:\Python\Python36\python.exe qsort.py
1000个随机数,冒泡排序平均时间为:0.057690
1000个随机数,快速排序(递归)平均时间为:0.001550
Process finished with exit code 0
注意
快速排序属于递归函数,在执行大量深度递归运算时,吃内存较大,容易崩掉;
当前代码示例,在我的8G内存、 I3CPU的 机器上,跑到995深度,直接崩了。