python简单速度测试

来源:互联网 发布:软件的特点是什么 编辑:程序博客网 时间:2024/05/21 21:41

刚开始接触python,对其飘逸的语法所“震撼”,与其说是在写代码,还不如说是在说一段代码。

刚开始学吧,写个简单的程序练一下手吧,就写了一个归并排序的算法

def merge(num_list,l_b,l_e,r_b,r_e):    temp=[]    begin=l_b    while l_b<=l_e and r_b<=r_e:        if num_list[l_b] < num_list[r_b]:            temp.append(num_list[l_b])            l_b=l_b+1        else:            temp.append(num_list[r_b])            r_b=r_b+1    while l_b<=l_e:        temp.append(num_list[l_b])        l_b=l_b+1    while r_b<=r_e:        temp.append(num_list[r_b])        r_b=r_b+1    for index in range(0,len(temp)):        num_list[begin+index]=temp[index]            def mergeSort(num_list,b,e):    if b<e:        mid=int((b+e)/2)        mergeSort(num_list,b,mid)        mergeSort(num_list,mid+1,e)        l_b=b        l_e=mid        r_b=mid+1        r_e=e        merge(num_list,l_b,l_e,r_b,r_e)    def main():    num_list=[5,4,1,7,9,8,6,5,4,7]    mergeSort(num_list)if __name__=="__main__":    main()

写完感觉还不错,于是乎上网看看别人用python咋写的。果然出乎我的预料,我仿造其格式,写了一下

def mergeSort(num_list):    if len(num_list)<=1: return num_list            mid=int(len(num_list)/2)    return merge(mergeSort(num_list[:mid]),mergeSort(num_list[mid:]))def merge(l_list,r_list):    temp_list=[]    while l_list and r_list:                  temp_list.append(l_list.pop(0)) if l_list[0]<=r_list[0] else temp_list.append(r_list.pop(0))    return temp_list+l_list+r_list

短小精悍,刚开始我怀疑 这么写的效率有没有问题啊。因为我原来的算法在函数之间不用传参数,就简单测试一下,再次出乎的预料,通过跑10w次,我原来的算法接近5s,而这个算法不到4秒,好吧,以后还是要使用python的思维写python代码,不过真的很优雅。


0 0