帶你了解堆排序

2021-09-28 23:26:00 字數 1034 閱讀 4289

堆排序在八大排序演算法中屬於選擇排序,她利用的是堆這種資料結構來構建的排序演算法,堆分為大頂堆、小頂堆,根節點的數值要麼是最大的,要麼是最小的,堆排序最主要的兩個操作是建堆和調整堆兩個操作。

public

static

void

downadjust

(int[

] array, int parentindex, int length)

// 如果父節點小於任何乙個孩子的值,直接跳出

if(temp >= array[childindex]

)break

;//無需真正交換,單向賦值即可

array[parentindex]

= array[childindex]

; parentindex = childindex;

childindex =

2* childindex +1;

} array[parentindex]

= temp;

}public

static

void

heapsort

(int[

] array)

system.out.

println

(arrays.

tostring

(array));

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

for(int i = array.length -

1; i >

0; i--

)}

堆排序的時間複雜度為o(nlogn)與快速排序一樣,空間複雜度為o(1),構建堆的時間複雜度為o(nlogn),需要進行n/2次迴圈,每一次呼叫downadjusut方法,調整堆和構建堆的時間複雜度是一樣的,這兩個方法存在於兩個不同的迴圈中,因此是並列的關係,最後得到堆排序的時間複雜度。

堆排序和快速排序一樣都是屬於不穩定排序,,但是不會出現想快速排序那樣不穩定的情況,通常使用在相對有序的大資料量下。

什麼是歸併排序?

帶你秒懂堆排序

首先我們要明確堆並非一種資料結構,所謂堆排序其實是對陣列進行排序。首先,我們可以將陣列看作乙個完全二叉樹,陣列第乙個元素a 0 即為二叉樹根節點,而後我們需要了解一些完全二叉樹的基礎概念 完全二叉樹最後乙個非葉子節點索引為 元素個數 2 1。記住這個以後我們就可以進行堆排序了,堆排序的思路比較簡單,...

了解了解堆排序的順序儲存

a 構建乙個堆分為兩步 1 建立一棵完全二叉樹 2 調整為乙個堆 b 演算法描述 建立一棵完全二叉樹 while 有雙親 c 時間複雜度為 o nlogn 空間複雜度為 o 1 是不穩定排序!auther yangchao date 2019 7 31 堆排序思想 完全二叉樹的定義 前 h 1 層為...

帶你了解make menuconfig

帶你了解make menuconfig 在嵌入式領域當中,在配置核心的時候會有很多配置方法,比如說make config 基於文字的為傳統的配置介面 make oldconfig 如何只想在原來核心配置的基礎上修改一部分,則會省去很多麻煩 make xconfig 基於圖形視窗模式的配置介面,xwi...