透徹理解時間複雜度

透徹理解時間複雜度

若覺得本文寫得還可以,請多多關注本人所作書籍《C++語法詳解》電子工業出版社出版,網盤地址:
https://pan.baidu.com/s/1dIxLMN5b91zpJN2sZv1MNg

本文爲原創文章,轉載請註明出處,或註明轉載自“黃邦勇帥(原名:黃勇)

本文是本人所作文章《透徹理解漸近表示法》的後續,若讀者不怎麼理解漸近表示法可參該文章

時間複雜度是用來衡量算法好壞的,因此,首先需要對算法及其衡量標準作一講解

一、算法的定義

1、算法是爲解決某一問題而設計的一個指令的序列。算法應具有以下特點:

  • 輸入和輸出:這是明顯的,通常,一個問題需要根據期望的輸入通過算法產生一個期望的輸出作爲結果,也就是說,算法用於求解輸入和輸出之間的關係。
  • 正確性:對每個輸入,算法都應以正確的輸出停機。當然,這並不代表不正確的算法就沒有用,若算法的錯誤率可控有時也是有用的。
  • 有限性:很明顯,任意算法都應在執行有限次數之後終止運行並給出輸出。若一個算法具有算法的所有其他特點,但缺少有限性,則這個算法被叫做計算方法,計算方法有時也是有用的。
  • 確定性和可行性:是指算法應由若干語義明確的基本操作組成,且每一基本操作在對應的計算機模型中是可兌現的。

2、針對一個問題需要先設計出一個算法(注:一個問題通常會有多種算法),然後還需證明該算法的正確性、有限性,最後還要分析這個算法的時間成本和空間成本,因此,算法包括如下幾個方面:

  • 算法設計:算法設計爲《數據結構與算法》課程的主要內容。
  • 算法證明(證明其正確性):算法正確性的證明可使用數學歸納法進行,算法證明不是本文的內容,因此,本文不作介紹。
  • 算法分析(分析其效率):算
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章