數據結構之空間復雜度和空間復雜度

  • 1.空間復雜度
    • 計算方法
  • 2.時間復雜度
    • 計算方法
      • 非遞歸
      • 遞歸情況遞歸總次數*每次遞歸次數

1.空間復雜度

  • 空間復雜度是指 執行這個算法所需要的內存空間。
  • 空間復雜度是函數中創建對象的個數關于問題規模函數表達式,一般情況下用O漸進表示法表示

計算方法

1.忽略常數,用O(1)表示
2.遞歸算法的空間復雜度=遞歸深度*每次遞歸所要的輔助空間
3.對于單線程來說,遞歸有運行時堆棧,求的是遞歸最深的那一次壓棧所耗費的空間的個數,因為遞歸最深的那一次所耗費空間足以容納它所有遞歸過程。遞歸是要返回上一層的,所以它所需要的空間不是一直累加起來的。

2.時間復雜度

  • 時間復雜度是指 執行這個算法所需要的計算工作量。

計算方法

1.用常數1取代運行時間中的所有加法常數
2.在修改后的運行次數函數中,只保留最高階項
3.如果最高階項系數存在且不是1,則去除與這個項相乘的常數

非遞歸

void Test(int n)
{int iCount = 0;for (int iIdx = 0; iIdx < 10; ++iIdx){iCount++;}
}//執行總次數:f(n)=10 + 1
//則O(n)=O(1)

遞歸情況遞歸總次數*每次遞歸次數

int Jie_Cheng(int n)
{if (n < 2)return 1;elseint i = n;int tmp = Jie_Cheng(n - 1);return n * tmp;
}
//每次遞歸次數:2
//遞歸總次數:n
//2*n   所以O(n)=O(n)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382818.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382818.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382818.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

node.js 獲取異步方法里面數據 的方式

第一種 使用回調函數&#xff1a; function getData(callback){setTimeout(function(){var name xxxx;callback(name);}, 1000); }// 外部獲取異步方法里面的數據 采用回調函數的方式 getData(function(data){console.log(name); });第二種方式 事件觸發&#xff1a; var fs…

C語言malloc和calloc的區別

是否對申請的區域進行初始化而已 但是我想你也知道我們寫程序的時候多用malloc而很少用calloc&#xff0c;何解&#xff1f; 因為calloc雖然對內存進行了初始化&#xff08;全部初始化為0&#xff09;&#xff0c;但是同樣也要降低效率的 calloc相當于 p malloc(); memse…

node.js將buffer對象轉換為json對象

d 是buffer對象 let jsstr JSON.stringify(d);let jsondata JSON.parse(jsstr);let buf new Buffer(jsondata);let data buf.toString();sx JSON.parse(data);console.log(sx[peer_count]);詳見百度經驗: https://jingyan.baidu.com/article/8ebacdf079f00549f75cd564.htm…

靜態多態之泛型編程(模板)

起初&#xff0c;我們寫不同類型的加法函數是這樣寫的吧&#xff1a; //Template.h #pragma onceint Add(const int left,const int right) {return leftright; }char Add(const char left,const char right) {return leftright; }float Add(const float left,const float rig…

網站視頻解析 有的url資源放在瀏覽器能直接播放,有的卻不行。

1有的視頻url放在瀏覽器地址欄&#xff0c;回車能直接播放 2.有的視頻url卻直接下載下來一個 很短暫的m3u8文件&#xff0c; 且不能播放 這時候把視頻url放在 vlc 或者專門解析m3u8的網站上卻能直接播放&#xff1a; 例如&#xff1a;https://youku.com-l-youku.com/20190207/2…

【數據結構】布隆過濾器原理詳解及其代碼實現

《博主簡介》 小伙伴們好&#xff0c;我是阿旭。專注于人工智能AI、python、計算機視覺相關分享研究。 ?更多學習資源&#xff0c;可關注公-仲-hao:【阿旭算法與機器學習】&#xff0c;共同學習交流~ &#x1f44d;感謝小伙伴們點贊、關注&#xff01; 《------往期經典推薦--…

c++詳解【繼承】

學過c的人都知道&#xff0c;c的三大特性&#xff1a;封裝、繼承、多態。 我們今天說的是c的繼承&#xff0c;那么為什么要引入繼承&#xff0c;它有什么特點呢&#xff1f; 首先&#xff0c;繼承的特點是&#xff1a;使代碼復用&#xff0c;為后面學習多態做鋪墊。 繼承分為…

centOS6.5如何從啟動界面直接進入命令行界面和如何從圖形界面進入命令行界面

centOS6.5如何從啟動界面直接進入命令行界面 編輯 /etc/inittab 將 id:5:initdefault: 修改為 id:3:initdefault: 下次重啟就不啟動X Window了 如何從圖形界面進入命令行界面 startx

優酷解析 轉載的

轉自 https://blog.csdn.net/qq_39797956/article/details/88076404

【送給Git初學者】

好多人都聽過Git吧&#xff0c;目前最流行的分布式版本管理系統。還有好多類似的cvs、svn&#xff08;速度慢、必須聯網&#xff0c;這些是集中式版本控制系統&#xff09;..... 那么&#xff0c;它是用來干什么的呢&#xff1f;舉個例子可能更好理解吧&#xff01; 比如你寫…

虛擬機中的Linux安裝VMware Tools的方法

虛擬機中的Linux安裝VMware Tools的方法 http://www.jb51.net/softjc/189144.html 當.pl文件無法執行時 chmod install-vmware.pl./ install-vmware.pl 安裝就可。 先以root身份登入。 VMware Tools所在位置&#xff1a;VMware 安裝路徑 \VMware\VMware Workstation\linux…

appium 設置參數

appium 配置好環境變量以后&#xff0c; 需要設置啟動參數&#xff0c; 設備名稱&#xff0c; 應用的一些信息主要有以下信息&#xff1a; {"platformName": "Android","platformVersion": "5.1.1","deviceName": "ee…

遠程倉庫

上節我們安裝好了git&#xff0c;并配置好git&#xff0c;github之間的ssh。這節我們就開始用git管理我們的倉庫吧。&#xff08;這節在windows下安裝的git bash上給大家演示吧&#xff09; 首先&#xff0c;創建好一個倉庫&#xff0c;主要步驟如下&#xff1a; 創建好倉庫后…

linux根目錄的意義和內容

1.du命令&#xff1a;du [選項] 文件 ????(1)功能該命令是顯示指定文件以及下的所有文件占用系統數據塊的情況&#xff0c;如果沒有文件&#xff0c;默認為是當前工作目錄 ????-a ???顯示所有文件對系統數據塊的使用情況 ????-b ???顯示數據塊大小時以字節…

c++詳解【智能指針】

智能指針&#xff1f;是一個指針嗎&#xff1f;這里給大家說的是&#xff0c;它不是一個指針&#xff0c;但它模擬了指針所具有的功能。那么&#xff0c;為什么要有智能指針的引入呢&#xff1f;看看下面的例子吧~ void FunTest() {int *p new int[10];FILE *pFile fopen(&qu…

python 使用 os的 popen(‘命令’) 如果命令行輸出中 有中文亂碼, 提示 'gbk' 無法解析的錯誤 解決辦法

os.chdir(‘你的命令’) res os.popen(v.testcomman)print(tempstream.buffer.read().decode(encodingutf-8)&#xff09;

node.js async await 配合Promise對象使用

function getData(){return new Promise(function(resolve, reject){setTimeout(function(){var uname zhang;console.log(this is timeout);resolve(uname);}, 1000);}); } //await 配合 promiese 的 resolve 使用 就會真的等待 同步 async function test(){console.log(1);v…

c++【深度剖析shared_ptr】

shared_ptr解決了scoped_ptr管理單個對象的缺陷&#xff0c;且解決了防拷貝的問題。shared_ptr可以管理多個對象&#xff0c;并且實現了資源共享。 但是仍然存在一些問題&#xff0c;比如&#xff0c;我們熟悉的雙向鏈表&#xff1a; struct Node { Node(const int& value…

centos重新安裝yum

1.備份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下載新的CentOS-Base.repo 到/etc/yum.repos.d/ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo 3. yum makecache GDB的安裝 yum…

Electron 渲染進程,如何解決require is not defined的問題

mainWindow new BrowserWindow({webPreferences: {nodeIntegration: true}}) // nodeIntegration: true 加上這一句 就可以了 5.0以后默認是false