快速排序(递归)与冒泡排序的比较测试

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深度,直接崩了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值