二叉堆中的上浮和下沉方法

2021-10-17 18:57:14 字數 1277 閱讀 1166

**參考《演算法》第四版

演算法和資料結構中,要細緻到每乙個條件和判斷,因為每乙個條件和判斷對應另一番處理邏輯,另一番場景。

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 如果節點有乙個兒子,則該節點可以在其父節點調整自...

優先佇列和二叉堆

優先佇列 我們知道普通佇列滿足元素先進先出,也就可以看成先進的元素具有更高的優先順序,在出列時優先順序高的先出。而優先佇列中的元素的優先順序不侷限於 先進 某種定義賦予它們不同的優先順序,優先順序更高的先出列。本文涉及的優先佇列優先順序定義是 數值越小,優先順序越高。也就是說,每次取出的元素都是當前...