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