Python簡(jiǎn)單速度測(cè)試
剛開(kāi)始接觸python,對(duì)其飄逸的語(yǔ)法所“震撼”,與其說(shuō)是在寫(xiě)代碼,還不如說(shuō)是在說(shuō)一段代碼。
剛開(kāi)始學(xué)吧,寫(xiě)個(gè)簡(jiǎn)單的程序練一下手吧,就寫(xiě)了一個(gè)歸并排序的算法
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() |
寫(xiě)完感覺(jué)還不錯(cuò),于是乎上網(wǎng)看看別人用python咋寫(xiě)的。果然出乎我的預(yù)料,我仿造其格式,寫(xiě)了一下
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 |
短小精悍,剛開(kāi)始我懷疑 這么寫(xiě)的效率有沒(méi)有問(wèn)題啊。因?yàn)槲以瓉?lái)的算法在函數(shù)之間不用傳參數(shù),就簡(jiǎn)單測(cè)試一下,再次出乎的預(yù)料,通過(guò)跑10w次,我原來(lái)的算法接近5s,而這個(gè)算法不到4秒,好吧,以后還是要使用python的思維寫(xiě)python代碼,不過(guò)真的很優(yōu)雅。
posted on 2014-06-04 10:57 順其自然EVO 閱讀(305) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 測(cè)試學(xué)習(xí)專(zhuān)欄