從網上下載了小甲魚的算法與數據結構視頻,打算把這個系列跟着視頻學完。以達到對算法有初步的瞭解算法
算法是解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,而且每條指條表示一個或者多個操做。(簡而言之,算法就是作各類事情的技巧和方式 )數據結構
記得小學時,老師爲你們講過德國大數據家高斯的故事,內容是高斯的老師要求全班同窗從1加到100求出和。當你們埋頭苦算時,高斯用很短的時間就獲得告終果。高斯用的方法就是1+100,2+99,3+98...都獲得101,那麼從1加到100的和就有50對101。50x101=5050 這樣算遠比從1挨個加到100快的多,這就是算法的效率。代碼以下:ide
1 private static int suanfa1(int n){ 2 int sum=0; 3 for (int i = 1; i <=n ; i++) { 4 sum+=i; 5 } 6 return sum; 7 } 8 9 private static int suanfa2(int n){ 10 int sum=0; 11 sum=(1+n)*(n/2); 12 return sum; 13 }
算法的特性測試
算法至少有一個或多個輸出。輸出的形式能夠是打印形式輸出,也能夠是返回一個值或多個值等。大數據
指算法在執行有限的步驟後,自動結束而不會出現無限循環,而且每個步驟在可接受的時間內完成。spa
算法的每個步驟都具備肯定的含義,不會出現二義性。算法在必定的條件下,只有一條執行路徑,相同的輸入只能有惟一的輸出結果。設計
算法的正確性是指算法至少應該具備輸入、輸出和加工處理的無歧義性、能正確反映問題的需求、可以獲得問題的正確答案。code
大致分爲如下四個層次視頻
算法設計另外一目的是爲了便於閱讀、理解和交流blog
當輸入數據不合法時,算法也能作出相關處理,而不是產生異常、崩潰或莫名其妙的結果。
算法設計的要求
應該具有時間效率高和存儲量低的特色,咱們應該儘可能思考這兩方面的問題。