Java中Heap 堆 和Stack 棧

2021-06-27 01:17:35 字數 494 閱讀 8609

heap(堆)

1>heap是stack的子集。

2>heap是執行時可動態分配的資料區,從速度看比stack慢,heap裡面的資料不共享,大小和生存期都可以在執行時再確定。

3>new關鍵字 是執行時在heap裡面建立物件。每new一次都一定會建立新物件,因為堆資料不共享。

stack(棧)

stack訪問速度僅次於暫存器,stack裡面的資料可共享,但是其中資料的大小和生存期必須在執行前確定。

例子:string str1= new string("abc");

string str2= "abc";

str1是在heap裡面建立的物件。

str2是指向stack裡面值為「abc」的引用變數,首先會建立引用變數str2, 再查詢stack裡面有沒有「abc」,有則將 str2指向 「abc」,沒有則在stack裡面建立乙個「abc」,再將str2指向「abc」。

堆中的路徑 Heap

7 2 堆中的路徑 25 分 將一系列給定數字插入乙個初始為空的小頂堆h。隨後對任意給定的下標i,列印從h i 到根結點的路徑。輸入格式 每組測試第1行包含2個正整數n和m 1000 分別是插入元素的個數 以及需要列印的路徑條數。下一行給出區間 10000,10000 內的n個要被插入乙個初始為空的...

堆中的路徑 Heap

7 2 堆中的路徑 25 分 將一系列給定數字插入乙個初始為空的小頂堆h。隨後對任意給定的下標i,列印從h i 到根結點的路徑。輸入格式 每組測試第1行包含2個正整數n和m 1000 分別是插入元素的個數 以及需要列印的路徑條數。下一行給出區間 10000,10000 內的n個要被插入乙個初始為空的...

STL中heap演算法(堆演算法)

push heap演算法 以下是push heap演算法的實現細節。該函式接收兩個迭代器,用來表現乙個heap底部容器 vector 的頭尾,而且新元素已經插入究竟部的最尾端。template inline void push heap randomaccessiterator first,rand...