深度學習 百面機器學習 堆排序

2021-10-23 21:09:52 字數 1048 閱讀 4267

堆的**實現

複雜度分析

二叉堆本質上是一種完全二叉樹,它分為兩個型別:

最大堆:最大堆任何乙個父節點的值,都大於等於它左右孩子節點的值。

最小堆:最小堆任何乙個父節點的值,都小於等於它左右孩子節點的值。

二叉堆的根節點叫做堆頂

最大堆和最小堆的特點,決定了在最大堆的堆頂是整個堆中的最大元素; 最小堆的堆頂是整個堆中的最小元素。

構建二叉堆,也就是把乙個無序的完全二叉樹調整為二叉堆,本質上就是讓所有非葉子節點依次下沉

二叉堆雖然是一顆完全二叉樹, 但它的儲存方式並不是鏈式儲存,而是順序儲存

換句話說, 二叉堆的所有節點都儲存在陣列當中。

我們再來回顧一下堆排序演算法的步驟:

把無序陣列構建成二叉堆。

迴圈刪除堆頂元素,移到集合尾部,調節堆產生新的堆頂。

第一步,把無序陣列構建成二叉堆,假設滿二叉樹高為h,有n=2h-1個節點。那麼 建堆過程中,第h層的2(h-1)個節點最多交換0次即可調整為堆,第(h-1)層的 2^(h-2)個節點最多交換1次,…,第1層的1個節點最多交換(h-1)次。因此時 間複雜度為o(n) 。

第二步,需要進行n-1次迴圈。每次迴圈呼叫一次 downadjust 方法,所以第二步的 計算規模是 (n-1) * logn ,時間複雜度 o(nlogn)。

兩個步驟是並列關係,所以整體的時間複雜度同樣是 o(nlogn)。

百面機器學習 深度學習常見問題

一 前向神經網路 1 寫出常用啟用函式 2 神經網路是否可將引數全部初始化為0?3 多層感知機表示異或邏輯需要多少個隱層?4 什麼是梯度消失和梯度 如何避免?5 寫出多層感知機的平方誤差和交叉熵的損失函式 6 解釋卷積操作中的稀疏互動和引數共享及其作用 7 乙個隱層需要多少隱節點才能夠實現包含n元輸...

百面機器學習

目錄 第一章 特徵工程 1.1特徵歸一化 1.2高維組合特徵的處理 特徵工程 對原始資料進行一系列工程處理,將其提煉為特徵。作為輸入給演算法和模型使用。本質上,特徵工程是乙個表示和展現資料的過程。特徵工程旨在去除原始資料中的雜誌。結構化資料 類似於資料庫中的乙個表,每乙個行列都有清晰的定義,包含數值...

百面機器學習一

特徵歸一化常見的有兩種,一種是線性函式歸一化,一種是零均值歸一化。線性函式歸一化 min max scaling 對原始資料進行線性變換,將結果對映到 0,1 的範圍,歸一化公式如下 x no rm x xmi nxma x xm in x frac x xnorm xma x x min x xm...