? 最近沒有來寫了,忙著考研啊,日子再也沒有以前輕松了,技術(shù)學(xué)的時間也不是很多了,只有自己有空的時候隨便摸
索一下了。
? 這次來回憶一下JAVA 中的算法,對于一個算法的好壞,我覺著這是一個比較值得注意的地方,評價一個算法要從多方
面去考慮,主要從以下幾個方面去考慮:
n 1.正確性(結(jié)果要正確,注意邊界值)
2.結(jié)構(gòu)性(每一塊空兩格或四格)
3.可讀性(命名合理,書寫規(guī)范,表達(dá)式不要太 復(fù)雜,要有注釋)
4.時間復(fù)雜度(盡量低,注意循環(huán)語句)
5.空間復(fù)雜度(盡量低,注意變量的使用)
?? 接下來就是幾個常見的算法了,別以為這些都很簡單,有時候去公司面試時,考官通常會給你一個很簡單的問題,但
是就是這個問題卻恰恰能夠反映出你的編程思想。我在一個網(wǎng)站看到這么一個問題:
? 打印1到100,其中遇到3的倍數(shù)打印TT,遇到5的倍數(shù)打印HH,既是3又是5的倍數(shù)打印TTFF。
這個很簡單吧,但是真正到了考場上并不一定就能很快的想出來。
?下面簡單介紹一下算法:
?1.枚舉算法,也叫 “ 窮舉法 ” ,使用很廣泛。基本思想是將所有可能的解都列舉出來,然后代入進(jìn)行演算,符合條
件的解,即為所求的結(jié)果。
2.遞推和迭代算法常用在數(shù)列問題中。關(guān)鍵是找到公式,公式找到 了,程序很容易實現(xiàn)。
3. 遞歸就是把函數(shù)或過程不斷地自我調(diào)用。遞歸在解決某些問題中,可以使某些看起來不易解決的問題容易解決,寫出
的程序較簡短。但是 遞歸也有自身的缺點,運行時間長,占用存儲空間多。
?其他就有高精度算法和進(jìn)制轉(zhuǎn)換的算法了。下面出幾個問題,各位友人有空的時候可以做一下吧。
?
1 :有 N(N>=3) 位同學(xué)去照相,每次照三個同學(xué),共可照出多少 張不全相同的照片?每張照片中都是誰?
??? 2:? 買菜問題:小明有 1 元 5 角錢,去菜場買菜,西紅柿 3 分錢 1 斤,黃瓜 5 分錢 1 斤,土豆 7 分錢 1 斤
,問小明把錢全部花完,三 種菜各買幾斤?
3 :有一堆游戲棒,第一個參加游戲的人取走了一半多一根,第 二個游戲者再將剩下的取走一半多一根,依此類推,到
第十個 人來取時,發(fā)現(xiàn)只剩下一根了。問游戲開始前這堆游戲棒共有 多少根。
4 :數(shù)列問題:有一數(shù)列 A(N) 的前幾項是 1,1,2,3,5,8, 13, … ,已 知后一項和前兩項有某種關(guān)系,試編程求出前
15 項的和,并將 這個數(shù)列輸出。
?? 加油!