經歷了兩個星期Linux運維基礎的鋪墊,這周我們正式開始了python的學習。經過第一周的各種掙扎以及反復訓練,終于有所收獲了一點東西?,F在將第一周中學到的一個非常重要的算法技巧總結如下:
即:折半思想
例:給定一個不超過五位數的正整數,判斷該數有幾位數
Code1:??????????????????????????????????????????????????????????????????????????????? Code2:
a = int(input(‘Please enter number1: ‘))??????????????????????????? a=int((input”Please enter a number:”))
if a<10:????????????????????????????????????????????????????????????????????????????????????? if a >= 100:
? print(“yiweishu”)???????????????????????????????????????????????????????????????????????? if a >= 10000:
elif a<100:?????????????????????????????????????????????????????????????????????????????????????????? print(5)
? print(“liangweishu”)??????????????????????????????????????????????????????????????????? elif a >= 1000:
elif a<1000:???????????????????????????????????????????????????????????????????????????????????????? print(4)
? print(“sanweishu”)?????????????????????????????????????????????????????????????????????? else:
elif a<10000:????????????????????????????????????????????????????????????????????????????????????? print(3)
? print(“siweishi”)???????????????????????????????????????????????????????????????????? else:
elif a<100000:????????????????????????????????????????????????????????????????????????????????? if a >= 10:
? print(“wuweishu”)????????????????????????????????????????????????????????????????????????????? print(2)
????????????????????????????????????????????????????????????????????????????????????????????????????????????? else:
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????? print(1)
?????? 通過對比這兩組簡單的代碼,我們發現右邊的代碼明顯的使用了折半的思想。具體體現為當判斷一個不超過五位數的正整數時,由于該數最大可能出現的位數是五位,因此找到判斷的中間點,即100。從100先開始判斷起,比100大即進入循環,否則不進入。直接縮小了匹配的范圍,對于算法效率的提升有顯著的效果。因此,在以后遇到查找匹配以及圖形打印等具有對稱性質的類型分析時,適當的通過折半提升算法效率,不失為一個很好的選擇。
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/93070