Java實現的堆排序演算法

2021-08-17 18:59:16 字數 832 閱讀 2599

一:堆排序演算法基本思想

堆排序(heapsort)是指

利用堆這種

資料結構所

設計的一種排序演算法。堆是乙個近似完全二叉樹的結構,並同時滿足堆

性質:即子結點的鍵值或索引總是小於(或者大於)它的父節點。

二:

三:源**具體實現

package com.stu.demo;

public class heapsort6

int a1 = integer.max_value;

int a2 = integer.max_value;

if (k1 < n)

a1 = arr[k1];// 左孩子值

if (k2 < n)

a2 = arr[k2];// 右孩子值

if (arr[k] < a1 && arr[k] < a2)

return;// 已經符合堆的要求了

// 找到左右孩子最小的,和他交換

if (a1 < a2) else

} static void heapsort(int arr)

// 一邊輸出堆頂,一邊調整

int n = arr.length;// 剩餘元素數

while (n > 0)

system.out.println();

} public static void main(string args) ;

heapsort(arr);

}}

堆排序演算法(java實現)

public class heapsort 左孩子編號 public static int leftchild int i 右孩子編號 public static int rightchild int i 保持最大堆的性質 param a,堆中的陣列元素 param i,對以該元素為根元素的堆進行調...

Java實現堆排序演算法

這是第乙個 之前只知道如何建堆,不知道演算法導論上還有如此巧妙的堆調整演算法。所以一開始自己寫的堆排序演算法非常低效,事件複雜度為o n 2 因為每次排序都是重建堆。但是,自己寫的程式還是有自己獨特的思想的,依然要分享出來給大家看看,尤其是確定陣列表示的樹的首個葉子節點的位置的方法。以下為 pack...

java實現堆排序演算法

堆排序相對簡單的冒泡演算法快就快在它利用了每一次排序,將結果儲存下來。堆結構是一顆完全二叉樹,即除了最後一層其他層的每個結點都包含兩個子結點,我們知道擁有子節點的元素腳標是0至n 2 1,我們從n 2 1開始向上構建大頂堆結構,每乙個父親結點的值都大於孩子結點,先取得左結點l和右結點r,比較結點大小...