空間復(fù)雜度計(jì)算的例題 算法的空間復(fù)雜度指的是什么?
算法的空間復(fù)雜度指的是什么? 1. 簡(jiǎn)言之,算法的空間復(fù)雜度是指計(jì)算機(jī)資源(如內(nèi)存和CPU)被占用的程度。 2. 具體解釋為:空間復(fù)雜度是算法在運(yùn)行過(guò)程中臨時(shí)占用的存儲(chǔ)空間量的度量,表示為s(n)=O
算法的空間復(fù)雜度指的是什么?
1. 簡(jiǎn)言之,算法的空間復(fù)雜度是指計(jì)算機(jī)資源(如內(nèi)存和CPU)被占用的程度。
2. 具體解釋為:空間復(fù)雜度是算法在運(yùn)行過(guò)程中臨時(shí)占用的存儲(chǔ)空間量的度量,表示為s(n)=O(f(n))。例如,直接插入排序的時(shí)間復(fù)雜度為O(n^2),空間復(fù)雜度為O(1)。一般的遞歸算法將有o(n)空間復(fù)雜度,因?yàn)槊總€(gè)遞歸算法將存儲(chǔ)返回信息。算法的優(yōu)缺點(diǎn)主要從執(zhí)行時(shí)間和存儲(chǔ)空間兩個(gè)方面來(lái)衡量。
(21) 算法的空間復(fù)雜度是指______?
(21)[答]d[檢查點(diǎn)]編程基礎(chǔ)[analysis]時(shí)間復(fù)雜度:運(yùn)行算法所花費(fèi)的時(shí)間是f(n)(即n的函數(shù))。
空間復(fù)雜度:算法占用的空間為g(n)(也是n的函數(shù))。為什么算法會(huì)占用內(nèi)存空間?它主要是內(nèi)存空間,因?yàn)樗惴ㄖ械淖兞亢偷刂吠ǔ4鎯?chǔ)在內(nèi)存中(如果它們?cè)谔摂M內(nèi)存、緩存中,甚至在CPU中運(yùn)行,它們也會(huì)占用內(nèi)存空間)。
面對(duì)一工科男來(lái)應(yīng)聘算法工程師,卻不知道int是幾個(gè)字節(jié),一個(gè)字節(jié)有幾位,這是一種怎樣的體驗(yàn)?
目前算法工程師的分工比較詳細(xì),而且很多算法工程師不做算法實(shí)現(xiàn),所以在使用編程語(yǔ)言時(shí)可能會(huì)出現(xiàn)不熟悉的情況。但是現(xiàn)在很多程序員對(duì)基礎(chǔ)知識(shí)的掌握不如以前那么扎實(shí),這是一個(gè)明顯的現(xiàn)象。
作為面試官,我經(jīng)常參加一些企業(yè)的程序員面試。在面試中,我通常會(huì)問(wèn)一些基本的問(wèn)題來(lái)了解程序員的基本知識(shí)結(jié)構(gòu)。例如,我問(wèn)了一個(gè)問(wèn)題,int是幾個(gè)字節(jié),大多數(shù)程序員都能回答這個(gè)問(wèn)題。類似的問(wèn)題包括計(jì)算機(jī)端口號(hào)的范圍、網(wǎng)絡(luò)尋址方式、TCP協(xié)議與UDP協(xié)議的區(qū)別、接口的作用、異或操作的規(guī)則等。一般來(lái)說(shuō),這些問(wèn)題通常是由初級(jí)程序員提出的,而對(duì)于高級(jí)程序員,他們通常會(huì)被問(wèn)到一些具體的解決方案。
一些簡(jiǎn)單的基本問(wèn)題的答案可以反映程序員的基本知識(shí)結(jié)構(gòu)。根據(jù)歷史經(jīng)驗(yàn),一些非計(jì)算機(jī)專業(yè)的程序員可能很難回答這些問(wèn)題,因?yàn)槟壳昂芏嗑幊陶Z(yǔ)言都比較簡(jiǎn)單,在很多實(shí)驗(yàn)中都無(wú)法實(shí)踐這些基礎(chǔ)知識(shí),但是這些基礎(chǔ)知識(shí)還不夠,知識(shí)對(duì)程序員來(lái)說(shuō)更重要。
在許多情況下,即使你不回答一些基本問(wèn)題,也不要泄氣。畢竟,目前的發(fā)展環(huán)境與早些年大不相同。程序設(shè)計(jì)更加注重模塊化、可擴(kuò)展性等問(wèn)題。但是程序員必須掌握基本知識(shí),特別是一些常識(shí)性問(wèn)題。
我已經(jīng)使用Java、C和python很長(zhǎng)時(shí)間了,我還在頭條上繼續(xù)寫一些關(guān)于編程和大數(shù)據(jù)的文章。對(duì)這些內(nèi)容感興趣的人可以關(guān)注我,我相信他們會(huì)有所收獲。
謝謝
算法的時(shí)間復(fù)雜度與空間復(fù)雜度各是什么意思?
它是根據(jù)程序數(shù)據(jù)n的大小來(lái)顯示程序使用的大致時(shí)間和空間。說(shuō)白了,它是顯示時(shí)間或空間如何隨著n的增長(zhǎng)而增長(zhǎng)。例如,對(duì)于(int i=0 i< n i),此循環(huán)執(zhí)行n次,因此對(duì)于(int i=0 i< n i){對(duì)于(int j=0 j< n i),時(shí)間復(fù)雜度為O(n)nj)}這個(gè)循環(huán)嵌套了兩個(gè)循環(huán),如果執(zhí)行N次,時(shí)間復(fù)雜度為O(N^2)。時(shí)間復(fù)雜度只能粗略地表示所用的時(shí)間,但一些基本步驟的運(yùn)行時(shí)間是不同的。我們無(wú)法計(jì)算。所以省略運(yùn)行時(shí)間,比如for(int i=0I< n i)a=B和for(int i=0I< n i)當(dāng)然是第二快的,但是它們的時(shí)間復(fù)雜度是相同的O(n)判斷時(shí)間復(fù)雜度看周期