qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

Python简单速度测试

 刚开始接触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代码,不过真的很优雅。

posted on 2014-06-04 10:57 顺其自然EVO 阅读(297) 评论(0)  编辑  收藏 所属分类: 测试学习专栏


只有注册用户登录后才能发表评论。


网站导航:
 
<2014年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜