第二章 排序 三 《演算法》讀書筆記

2022-06-09 20:06:14 字數 1288 閱讀 9176

目錄2.4.5 堆排序

當一顆二叉樹的每個結點都大於等於它的兩個子結點時,它被稱為堆有序

根結點是堆有序的二叉樹中的最大結點。

二叉堆是一組能夠用堆有序的完全二叉樹排序的元素,並在陣列中按照層級**儲存(不使用陣列的第乙個位置)。

一棵大小為n的完全二叉樹的高度為⌊lgn⌋。

private boolean less(int i, int j)

private void exch(int i, int j)

2.4.4.1 由下至上的堆有序化(上浮)

private void swim(int k)

}

2.4.4.2 由上至下的堆有序化(下沉)
private void sink(int k)

}

基於堆的優先佇列實現如下:

public class maxpq>

public boolean isempty()

public int size()

public void insert(key v)

public key delmax()

//輔助方法的實現見前面的**

private boolean less(int i, int j);

private void exch(int i, int j);

private void swim(int k);

private void sink(int k);

}

對於乙個含有n個元素的基於堆的優先佇列,插入元素操作只需不超過(lgn+1)次比較,刪除最大元素的操作需要不超過2lgn次比較。

2.4.4.3 多叉堆

2.4.4.6 索引優先佇列

2.4.5.1 堆的構造

用下沉操作由n個元素構造堆只需少於2n次比較以及少於n次交換。

2.4.5.2 下沉排序
將n個元素排序,堆排序只需少於(2nlgn+2n)次比較(以及一半次數的交換)。

public static void sort(comparable a)

}

2.4.5.3 先下沉後上浮

第二章 讀書筆記

第二章主要講的內容是搭建android 底層開發環境 其中包括 android 應用程式開發環境 android ndk 開發環境和交叉編譯環境的搭建。由於 android 基於linux 核心,所以搭建環境需要使用 linux 作為開發 linux 驅動的平台。它的底層開發需要的工具包含眾多的程式...

第二章讀書筆記

本章主要介紹搭建android 底層開發環境,主要包括 android 應用程式開發環境 android ndk 開發環境和交叉編譯環境的搭建。首先安裝jdk 並配置環境變數 搭建android 應用程式開發環境 1,安裝 android sdk 解壓後進入android sdk linux 目錄,...

Effective C 第二章 讀書筆記

05.了解c 預設編寫並呼叫哪些函式 編譯器缺省會產生四個函式 預設建構函式,預設析構函式,預設拷貝建構函式,預設複製操作符 即 06.若不想使用編譯器自動生成的函式,就該明確拒絕 為駁回編譯器自動提供的機能,可將相應的函式宣告為 private 並不予實現。使用像 uncopyable 這樣的 b...