日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

时间复杂度和空间复杂度[数据结构]

發布時間:2023/12/2 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时间复杂度和空间复杂度[数据结构] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:本文為小甲魚教學視頻的學習筆記。

?

1、為什么要學習時間復雜度和空間復雜度?你說一個算法好另外一個算法不好,有什么推斷根據?哪個算法效率高?怎么推斷?那么就要學習時間和空間復雜度了。

思考:學習每個知識之前都應該要考慮一下為什么要學習,學了有什么用處,什么場景下去用。


2、算法的效率高通常是指算法的運行時間,度量一個算法的運行時間有2種方式:

  • 事后統計法:須要編寫測試程序。萬一不好花費大量的時間精力,賠了娘子又折兵(而且測試環境不同區別不是一般的大)
  • 事前統計法:程序編寫前,使用統計方法對算法進行估算

思考:百度搜索事前避孕藥和事后避孕藥,會有更深刻的理解


3、一個高級語言編寫的程序在計算機上執行時所消耗的時間取決于下列因素:

  • 算法採用的策略,方案(方法思路)
  • 編譯產生的代碼質量(編譯器的優劣,編譯語言的優劣)
  • 問題的輸入規模(輸入量的多少,須要一個循環)
  • 機器運行指令的速度(硬件環境)

4、我們研究算法的復雜度,側重的是研究算法隨著輸入規模擴大增長量的一個抽象。而不是精確地定位須要運行多少次。

由于假設這種話,我們就又不得不考慮編譯器優化的問題。然后就沒然后了。

思考:由于外部因素的影響非常大。非常難精確定位運行次數。那就對增長量抽象出來進行對照未嘗不是一個好的方案。


5、怎樣對增長量進行抽象:忽略程序所用的語言、忽略程序跑在什么樣的機器上、不計哪些循環索引的增長和循環終止條件、變量聲明、打印結果。

我們僅僅關心它所實現的算法。

思考:分析程序的執行時間,最重要的是把程序看成獨立于編程語言的算法或者一系列的步驟。


6、我們在分析一個算法的執行時間時:重要的是把基本操作的數量和輸入模式關聯起來。


思考:分析隨著輸入量的添加。操作數量的增長情況用以推斷算法效率高低。


7、函數的漸進增長:對于給定的兩個函數f(n)和g(n),假設存在一個整數N,使得對于全部的n>Nf(n)總是比g(n)大,那么。我們說f(n)的增長漸進快于g(n)。與最高次項線程的常熟并不重要,也能夠忽略。常數也能夠忽略。推斷一個算法的好不好。僅僅通過少量的數據是不能夠推斷的。以免以偏概全。

思考:推斷算法效率是,函數中的常熟和其它次要項經常能夠忽略,而更應該關注主項(也就是最高項)的階數

轉載于:https://www.cnblogs.com/bhlsheji/p/5370631.html

總結

以上是生活随笔為你收集整理的时间复杂度和空间复杂度[数据结构]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。