**參考《演算法》第四版
演算法和資料結構中,要細緻到每乙個條件和判斷,因為每乙個條件和判斷對應另一番處理邏輯,另一番場景。
package algorithms.sort;
/* 二叉堆使用陣列儲存,陣列中的元素是按照二叉堆的層級順序排序,也就是二叉堆的操作是按照二叉堆的層級結構進行操作的,
而不是陣列中元素的順序,由線性的順序操作,變成了非線性的二叉堆跳躍式遍歷和取值操作,大大提高了演算法效率
*/class
binarydui
}//較大的值下沉到合適的位置
//元素按照堆結構順序存入陣列中
public
static
void
sink
(int
a,int k)
}public
static
void
exch
(int
a,int i,
int j)
public
static
intless
(int
a,int i,
int j)
public
static
void
main
(string[
] args)
;int
b =
;for
(int i : b)
system.out.
print
(i +
" ")
; system.out.
println()
;//將14下沉到合適位置
sink
(b,1);
for(
int i : b)
system.out.
print
(i +
" ")
; system.out.
println()
;int
c =
;//將14上浮到合適位置
swim
(c,6);
for(
int i : c)
system.out.
print
(i +
" ");}
}
輸出:
0148
9765
4098
57614
40148
9765
4
二叉堆和二叉搜尋樹高階
1 引言 演算法競賽高階指南 中指出,在二叉樹中,有兩組非常重要的條件,分別是兩類資料結構的基本性質。其一是 堆性質 若二叉樹中的任意乙個節點的權值都大於等於 小於等於 其父親節點,則稱該二叉樹滿足 小頂堆性質 大頂堆性質 其二是 bst性質 二叉樹上的每個節點都帶有乙個數值,稱為該節點的鍵值 ke...
二叉查詢樹和二叉堆的分析小結
二叉查詢樹和二叉堆的分析小結 一 二叉排序樹 樹中的每個節點,它的左子樹中的所有項的值小於x中的項,而它的右子樹中所有項的值大於x中的項。二叉查詢樹中最困難的操作是remove 刪除 分為以下幾種情況 1 如果節點是一片樹葉,那麼它可以被立即刪除 2 如果節點有乙個兒子,則該節點可以在其父節點調整自...
優先佇列和二叉堆
優先佇列 我們知道普通佇列滿足元素先進先出,也就可以看成先進的元素具有更高的優先順序,在出列時優先順序高的先出。而優先佇列中的元素的優先順序不侷限於 先進 某種定義賦予它們不同的優先順序,優先順序更高的先出列。本文涉及的優先佇列優先順序定義是 數值越小,優先順序越高。也就是說,每次取出的元素都是當前...