排序演算法 (四)堆排序

2021-08-03 04:35:54 字數 812 閱讀 1433

對簡單選擇排序的優化。

1、將序列構建成大頂堆。

2、將根節點與最後乙個節點交換,然後斷開最後乙個節點。

3、重複第

一、二步,直到所有節點斷開。

堆排序模擬流程圖:

public

class heapsort

}//對data陣列從0到lastindex建大頂堆

private

static

void

buildmaxheap(int data, int lastindex)

}//如果k節點的值小於其較大的子節點的值

if(data[k]//交換他們

swap(data,k,biggerindex);

//將biggerindex賦予k,開始while迴圈的下一次迴圈,重新保證k節點的值大於其左右子節點的值

k=biggerindex;

}else}}

}//交換方法

排序演算法(四)堆排序

堆排序 是指利用堆積樹 堆 這種資料結構所設計的一種排序演算法,它是選擇排序的一種。堆的定義 乙個完全二叉樹中,任意父結點總是大於或等於 小於或等於 任何乙個子節點,則為大頂堆 小頂堆 完全二叉樹適合採用順序儲存的方式,因此乙個陣列可以看成乙個完全二叉樹。先將初始檔案r n 建立成乙個大頂堆 小頂堆...

swift演算法之排序 (四)堆排序

1 概述 堆排序是指利用堆這種資料結構所設計的一種排序演算法。堆是乙個近似完全二叉樹,並同時滿足堆積的性質 子節點的鍵值或索引總是大於 小於它的父結點。堆又分為 大頂堆 和小頂堆,大頂堆的特點是 該完全二叉樹的根節點比其左右節點都要大,小頂堆的特點是 在小頂堆中根節點比左右子節點的值都要小。1 大頂...

八大排序(四) 堆排序

堆是具有以下性質的完全二叉樹 每個結點的值都大於或等於其左右孩子結點的值,稱為大頂堆 每個結點的值都小於或等於其左右孩子結點的值,稱為小頂堆 如下圖所示 對堆中的結點按層進行編號,將這種邏輯結構對映到陣列中就是下面這個樣子 以上陣列從邏輯上講就是乙個堆結構,用簡單的公式來描述一下堆的定義就是 大頂堆...