數據結構與算法之算法初體驗(1)

  從網上下載了小甲魚的算法與數據結構視頻,打算把這個系列跟着視頻學完。以達到對算法有初步的瞭解算法

  • 什麼是算法?

  算法是解決特定問題求解步驟的描述,在計算機中表現爲指令的有限序列,而且每條指條表示一個或者多個操做。(簡而言之,算法就是作各類事情的技巧和方式 )數據結構

  記得小學時,老師爲你們講過德國大數據家高斯的故事,內容是高斯的老師要求全班同窗從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     }
View Code

算法的特性測試

  • 輸出

  算法至少有一個或多個輸出。輸出的形式能夠是打印形式輸出,也能夠是返回一個值或多個值等。大數據

  • 有窮性

  指算法在執行有限的步驟後,自動結束而不會出現無限循環,而且每個步驟在可接受的時間內完成。spa

  •  肯定性

  算法的每個步驟都具備肯定的含義,不會出現二義性。算法在必定的條件下,只有一條執行路徑,相同的輸入只能有惟一的輸出結果。設計

  •  正確性

  算法的正確性是指算法至少應該具備輸入、輸出和加工處理的無歧義性、能正確反映問題的需求、可以獲得問題的正確答案。code

  大致分爲如下四個層次視頻

  1. 算法程序沒有語法錯誤。
  2. 算法程序對於合法輸入可以產生知足要求的輸出。
  3. 算法程序對於非法輸入可以產生知足規格的說明。
  4. 算法程序對於故意刁難的測試輸入都有知足要求的輸出結果。
  • 可讀性

  算法設計另外一目的是爲了便於閱讀、理解和交流blog

  • 健壯性

  當輸入數據不合法時,算法也能作出相關處理,而不是產生異常、崩潰或莫名其妙的結果。

  算法設計的要求

  • 時間效率高和存儲量低

  應該具有時間效率高和存儲量低的特色,咱們應該儘可能思考這兩方面的問題。

相關文章
相關標籤/搜索