冒泡、插入、快速排序性能对比

冒泡、插入排序代码见:

https://blog.csdn.net/JohnsonSmile/article/details/89386783

https://blog.csdn.net/JohnsonSmile/article/details/89407058

下面是快速排序的代码:

import numpy as np;
def quick(L):
    if len(L)<=1:
        return L;
    l = L[0];
    l1,l2 = [],[];
    for t in L:
        if t>l:
            l2.append(t);
        elif t<l:
            l1.append(t);
    lnew = quick(l1) + [l] + quick(l2);
    return lnew;

if __name__ == '__main__':
    l1 = np.round(np.random.rand(10)*100+100,2).tolist();
    print('--------------------排序前---------------------');
    print(l1); ############
    print('--------------------排序后---------------------');
    l2 = quick(l1);
    print(l2); ###########

测试结果是否OK:

下面对这三种排序算法按照排序容量从1到900进行测试性能:

import numpy as np;
import matplotlib.pyplot as plt;
from time import time;
from bubblesort import bbsort2 as bbsort;
from insert_sort import ISsort;
from quick_sort import quick;

if __name__ == '__main__':
    tt1 = [];
    tt2 = [];
    tt3 = [];
    x = [i for i in range(1,900,3)];
    for j in range(1,900,3):
        height = np.round(np.random.rand(j)*100+100,2).tolist();
        t1 = time();
        height_new = bbsort(height);
        t2 = time();
        height = np.round(np.random.rand(j)*100+100,2).tolist();
        t3 = time();
        height_new2 = ISsort(height);
        t4 = time();
        height = np.round(np.random.rand(j)*100+100,2).tolist();
        t5 = time();
        height_new3 = quick(height);
        t6 = time();
        tt1.append(t2-t1);
        tt2.append(t4-t3);
        tt3.append(t6-t5);
    plt.plot(x,tt1,'r--',label='bubble');
    plt.plot(x,tt2,'b--',label='Isert');
    plt.plot(x,tt3,'g--',label='quick');
    plt.xlabel('length of list/k');
    plt.ylabel('time/s');
    plt.legend(loc = 'upper left');
    plt.show();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值