關於優化 寫給自己

2021-09-25 21:06:49 字數 1395 閱讀 6652

寫東西的目的主要是在於整理總結和「爛筆頭」的記錄;其次寫作是一種很好的表達方式,也是糾結了好久才決定的(為了自己想要寫好而寫的)。

關於優化,有件小事印象挺深的。還記得當時剛接觸程式設計,做乙個小練習(後來還翻了之前的稚嫩**haha),是乙個「整數1234,逆轉後為4321」,當時第一眼的想法是:如果單純要實現逆轉的效果,那就放在陣列裡去實現功能,**如下:

int  arr=;

int len=arr.length;

for(int i=0;i為了輸入任意整數,可以用(new scanner(system.in).nextint();)來實現,接著用迴圈(/10與%10)操作來獲得整數各位上的數字,然後放入陣列中執行上述**,即可完成。於是在用上述想法敲完後,腦子頓出乙個想法,若個位數為0的整數如「1230」則會變成「0123」,雖然「0123」和「123」的值是相同的,可是對於比較在意這些小細節來說,不太滿意。因此就推倒重來,換個思路:既然1234=1×10×10×10+2×10×10+3×10+4;那麼我就可以拆解4321=(((4+0)×10+3)×10+2)×10+1,新的**①如下(long型是當時想比int更大的整數範圍):

long reverse=0;

while(a!=0)

long reverse=(long) (reverse/10);

system.out.println(reverse);

其實上述已經解決了陣列的問題,至少看著執行的結果更順眼些,在看了幾個執行結果後,由於自己當時已經考慮了long型更大的取值範圍,那麼在上述**行①的註解中,跳出迴圈的值會較實際逆轉值擴大10倍(導致部分值逆轉後本來沒超long型的範圍,可是卻會報錯),因此既然考慮了範圍,那麼這樣會白白損失了一些值取不到,讓我略微不滿意,因此產生了這個版本的解法②:

long reverse=0;

while(a!=0)

a=a/10;//控制條件 迴圈(/10)操作為了下次(%10)來獲取數字上的各個數字

} system.out.println(reverse);

}}*/

對比①和②:②產生的物件個數並沒有增加,另外②中 if(a/10!=0)判斷的目的是最後一次不用(×10)可以對比4321=(((4+0)×10+3)×10+2)×10+1,最後一次操作只+了個位數1,有點類似遞迴(先+在×),最後一次僅作了+操作,那麼利用這個 if(a/10!=0)來防止最後出現乙個「畸形」的擴大10倍結果值,將錯誤扼殺在搖籃中,而這麼來看的話,①中迴圈後的(/10)縮值操作只是來「擦屁股」的。當然②中確實多了幾步判斷運算,嚴格來說時間會多一丟丟,可是在正常的計算機中這些時間只是ms級別的,可以忽略不記,對於我這種「使用者」感受會更好些。

也就是當時這件小事,讓我對優化有了一定的認知,而且 if(a/10!=0)這種用法讓我決定判斷語句是如此的有趣和實用

寫給自己的話

這是自己在這個論壇的第一篇部落格。對於自己的成長過程,總想能夠有個很不一樣的角度去了解清楚。就像我希望自己能夠飛得很高,可以看到地面上發生的 一切,手搭在額頭向後看可以了解自己以前是怎樣的一路走來,向前看能夠知道以後什麼樣子,這是曾經出現在自己夢裡很多次的場景,有時想想,好笑,悲傷。我想我有這樣的想...

寫給我自己

現在是八月中旬,今天幾乎沒有做什麼事,回想起來,這幾個月貌似有點墮落,浪費了很多時間,明明應該有很多事情要做的 至少,我的ps,和cv應該準備了吧,如果是香港留學,那麼rp應該也要好好寫了吧。至少,報考了九月中旬的托福考試,應該好好準備考試了吧,雖然說去年考的比較失敗,但是不能因為這樣就沒自信呀 不...

My first blog寫給自己

時間過得真是很快,一年又一年的,還記得11,12年的時候,那時候真是年輕啊,想法很單純而且目標也很明確,想幹什麼就去努力,終於實現了自己的理想,回頭看看其實那時候是最幸福和充實的.而如今 真是越來越浮躁了,可能是因為各方面壓力造成的吧也可能年紀大了的原因.我本身就是喜歡折騰得人,最近公司的效益真的不...