程式設計珠璣第14章

2021-05-28 15:00:06 字數 760 閱讀 4729

這裡把所有關於堆的操作寫出來。當做標程吧。

#include#include#define ms 1025

typedef struct _heap

heap;

heap h;

static void _shift(heap *h, int i)

else break;

} a[i] = t;

}static void _increase_key(heap *h, int i, int key)

else break;

} a[i] = t;

}void build_heap(heap *h)

int pop(heap *h)

void push(heap *h, int v)

int main(void)

build_heap(&h);

while (h.size > 1)

printf("%d ", pop(&h));

printf("%d\n", pop(&h));

} return 0;

}

習題1、2、3、

4、b 排序之後再進行計算,或者用最小堆,每次取最小的數來求和。

c 建立乙個100萬個數的堆

d 實際上是歸併排序,在演算法導論中也有提及,就是把這k個要歸併的,建立成為k元堆,每次取出最小的,並把這個最小的所在鏈的下乙個加入堆中。

5、沒看明白

6、7、值得研究

程式設計珠璣第12章

正文 如何生成0 n 1內的m個隨機整數 1 方法一 比如要從5個數里選出2個數,第乙個數的概率是2 5,第二個數的概率是1 4,然後是0 3 那麼現在已經很清楚了。可以寫 如下 for int i 0 i n i if rand n i m 2 方法二 可以用乙個set,每生成乙個隨機,就去set...

程式設計珠璣第13章

正文 為了解決在12章中的隨機數問題,本章中的目的是對檢視是否在陣列中的情況進行處理。那麼這裡採用了以下幾種方法 1 採用c 的set 2 採用陣列 3 採用鍊錶,順序搜尋,插入時不用移動。結果是陣列的比鍊錶的要快 1 鍊錶需要讀入的記憶體數比陣列大 2 陣列訪問有較好的記憶體相聯性,而鍊錶則不能保...

程式設計珠璣 第7 8 9章

基本技巧 兩個答案比乙個答案好 快速檢驗 量綱檢驗 經驗法則 實踐little定律 系統中物體的平均數量等於物體離開系統 的平均速率和每個物體在系統中停留的平均時間的乘積 任何事都應盡量簡單,但不宜過於簡單 複雜深奧的演算法有時可以極大地提高程式效能 重要的演算法設計技術 儲存狀態,避免重複計算。通...