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() |
寫完感覺還不錯,于是乎上網(wǎng)看看別人用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 |
短小精悍,剛開始我懷疑 這么寫的效率有沒有問題啊。因為我原來的算法在函數(shù)之間不用傳參數(shù),就簡單測試一下,再次出乎的預料,通過跑10w次,我原來的算法接近5s,而這個算法不到4秒,好吧,以后還是要使用python的思維寫python代碼,不過真的很優(yōu)雅。
posted on 2014-06-04 10:57 順其自然EVO 閱讀(305) 評論(0) 編輯 收藏 所屬分類: 測試學習專欄