程式設計珠璣ch02

2021-07-11 13:19:07 字數 982 閱讀 2815

1.給定乙個包含32位整數的順序檔案,它至多只能包含40億個這樣的整數,並且整數的次序是隨機的。請查詢乙個此檔案中不存在的32位整數。在有足夠主存的情況下,你會如何解決這個問題?如果你可以使用若干外部臨時檔案但可用主存卻只有上百位元組,你會如何解決這個問題呢?

情形一:32位整數,從0到23

2−1 ,用乙個bit來表示乙個整數是否存在於此順序檔案中。

一共需要23

2bit

=229

byte

=219

kb=512mb

。 在記憶體中分配512mb的空間,初始化為全0,順序掃瞄檔案,讀到整數n時,將512mb中的第n位設定為1。一次掃瞄完檔案後,即將40億個整數記錄下來了。

512mb空間中第乙個為0的位為m,則順序檔案中不存在整數m。

對於這種方法,可以對23

2 個數分段,可以使記憶體的需求減小,但是需要多次順序遍歷

情形二:根據整數的最高k位,將順序檔案分解成2k

個檔案。當要判斷乙個數是否屬於原順序檔案時,根據其高k位,確定它只能在某乙個小檔案中,順序搜尋該小檔案。

分解的方法需要額外的磁碟空間,但是能夠減少耗時。

2.請將乙個具有n個元素的一維向量向左旋轉i個位置。例如向量abcdefg旋轉3位之後得到向量defghabc。僅使用幾十位元組的微小記憶體,花費與n成比例的時間,旋轉該向量。

void

reverse(char *arr, int start, int end)

3.給定一本英語單詞詞典,請找出所有的變位詞集。例如,因為「pots」、「stop」、「tops」相互之間都是由另乙個詞的各個字母改變序列而構成的,因此這些詞相互之間就是變位詞。

map

> result;

void function(vector

input)

}

先排序,一組變位詞排序得到的字串是同乙個字串。

CH02 提供推薦

目標輸出 我想得到乙個長串,裡面既有與這個人評分較高 即相似度較高 的人的名字,也有他的得分,應該用python裡的什麼結構?q 乙個列表也好,乙個字典也好,不定義可以直接用嗎?a 不可以。乙個字元在不定義的時候可以直接用 for item in 並沒有定義item,直接拿來用就好 item可以是數...

CH02 資源 04 資源限制

資源限制的目的 kubernetes對資源的限制實際上是通過cgroup來控制的,cgroup是容器的一組用來控制核心如何執行程序的相關屬性集合。針對記憶體 cpu和各種裝置都有對應的cgroup 預設情況下,pod執行不受cpu和記憶體限額的限制,意味著可以消耗所在節點的所有cpu和記憶體,所以一...

雲課堂 組合語言筆記ch02

章節2 基礎知識 14.乙個工具給win7 or win10 15.二進位制 機器指令 彙編指令的關係 自答 機器指令用二進位制來表示。彙編指令通過彙編器可以翻譯成機器指令,而且是一一對應的.組合語言由以下三部分組成 a.彙編指令 彙編器 機器指令 b.偽指令 翻譯規則 告訴彙編器這兒怎麼翻譯那兒怎...