零基礎學演算法第二講 演算法的空間複雜度

2021-10-23 20:25:52 字數 1938 閱讀 7159

在做題過程中會遇到一些空間限制,如下圖的「記憶體限制」為128mb。這個128mb就限制了如果我們不開棧、沒有遞迴、只開int陣列的情況下,只允許將陣列開到107

10^7

107這樣的數量級。這個數字是怎麼得到的呢

根據空間限制計算允許的陣列大小

練習題記憶體的最小單元是一根導線,我們可以用通電來表示1,斷電來表示0,也就是一根線只能表示兩個數字,故記憶體使用的是二進位制。我們將一根線稱作乙個二進位制位(1 bit)

表示記憶體大小的單位有:bit、byte、kb、mb、gb、tb

其中部分單位解釋如下:

單位含義

名稱換算

bit乙個二進位制位

位元byte

八個二進位制位

位元組8 bit = 1 byte

kb1024個位元組

千位元組1024 byte = 1 kb

mb比kb高一級的單位

兆位元組1024 kb = 1 mb

就像時間的單位時分秒一樣,秒進製以後就是分,分進製以後是小時。我們的記憶體單位也有相應進製的關係。除了 bit 到 byte 是八進位制以外,其餘進製都是210=

1024

2^ = 1024

210=10

24資料型別

乙個該型別變數佔據的記憶體

儲存方式

能表示的最大數字(量級)

int32位二進位制位(32 bit)

第乙個二進位制位為符號位,該位為0表示正數,為1表示負數,其餘位置儲存實際數字

2 31−

1=2147483647

2^ - 1 = 2147483647

231−1=

2147

4836

47long long

64位二進位制位(64bit)同上264−

12^ - 1

264−

1double

64位二進位制

科學計數法儲存。第乙個二進位制位為符號位,接下來11位儲存科學計數法中10的指數部分。餘下的53位儲存小數部分(見下圖**)

1

0308

10^10

308double型別的儲存方式:

空間限制為512mb

512mb

512m

b的時候,如果不開棧、無遞迴、只開乙個int陣列,那麼這個陣列可以開到多大的量級?

首先轉換mb為bit:空間限制為512

×1024

×1024×8

512\times1024\times1024\times8

512×10

24×1

024×

8 bit

然後我們知道乙個int型別佔據32bit,所以允許開出的陣列大小為:512

×1024

×1024×8

32=128×

1024

×1024≈1

08\frac = 128\times1024\times1024 ≈10^

32512×

1024

×102

4×8​

=128

×102

4×10

24≈1

08空間限制為128mb

128mb

128m

b的時候,如果不開棧、無遞迴、只開乙個double陣列,那麼這個陣列可以開到多大的量級?

長度為107

10^7

107的double型別陣列佔多少空間?(說出數量級即可)

零基礎學Python語言 第二週

1.python蟒蛇繪製例項 import turtle def drawsnake rad,angle,len,neckrad for i in range len turtle.circle rad,angle turtle.circle rad,angle turtle.circle rad,...

《零基礎學演算法》 第1章 基礎演算法思想

程式設計 資料結構 演算法 程式語言 需要滿足兩個條件 一般有三個要求 綜上,有幾點需要注意 例項 求階乘 數制轉換 一般具有以下特徵的問題可以使用分治法來求解 分治與遞迴演算法經常同時應用在演算法設計之中 分解 求解 合併 貪婪演算法總是做出在當前看來是最好的選擇。不從整體最優考慮,選擇區域性最優...

《零基礎學演算法 第3版》PDF 免費

pdf電子書 零基礎學演算法 第3版 出版社 機械工業出版社 出版年 2014年 pdf書籍頁數 492 格式 pdf電子書 isbn 9787111461883 內容簡介 零基礎學演算法 第3版 分為上 下兩篇,共10章,上篇用5章的篇幅介紹了演算法和資料結構的基礎知識,包括基礎演算法思想 簡單資...