package sort.choose;
import java.util.Arrays;
/**
* @author chenyi
* @Description 二叉樹遍歷
* @date 2022/2/17 15:30
*/
public class HeapSort {
public static void main(String[] args) {
//int arr[] = {4,6,8,5,9};
int arr[] = {10, 6, 14, 4, 8, 12, 16, -1, 1, 99};
System.out.println("遍歷順序存儲(chǔ)二叉樹");
System.out.println(Arrays.toString(arr));
/*System.out.println("第一次堆排序");
adjustHeap(arr,arr.length/2-1,arr.length);
System.out.println(Arrays.toString(arr));
System.out.println("第二次堆排序");
adjustHeap(arr,1,arr.length);
System.out.println(Arrays.toString(arr));
System.out.println("第三次堆排序");
adjustHeap(arr,0,arr.length);
System.out.println(Arrays.toString(arr));*/
System.out.println("堆排序");
for (int i = (arr.length >> 1) - 1; i >= 0; i--) {
adjustHeap(arr, i, arr.length);
}
for (int i = arr.length - 1; i > 0; i--) {
// 把最大的數(shù)放到末尾
int temp = arr[0];
arr[0] = arr[i];
arr[i] = temp;
adjustHeap(arr, 0, i);
}
System.out.println(Arrays.toString(arr));
}
private static void adjustHeap(int[] arr, int i, int length) {
// 記錄i的值
int temp = arr[i];
int max = i;
// 至少要有一個(gè)左節(jié)點(diǎn)吧
while (max * 2 < length - 1) {
// 比較樹的左右節(jié)點(diǎn)
if (arr[2 * i + 1] > arr[max]) {
max = 2 * i + 1;
}
if (2 * i + 2 < length && arr[2 * i + 2] > arr[max]) {
max = 2 * i + 2;
}
if (max == i) {
break;
}
// 交換之后要考慮是否會(huì)影響子樹课舍,所以要對(duì)變更的節(jié)點(diǎn)進(jìn)行再次調(diào)整
arr[i] = arr[max];
arr[max] = temp;
i = max;
}
}
}
堆排序
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門傻咖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人达箍,你說我怎么就攤上這事没龙。” “怎么了缎玫?”我有些...
- 文/不壞的土叔 我叫張陵硬纤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我赃磨,道長(zhǎng)筝家,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任邻辉,我火速辦了婚禮溪王,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘值骇。我一直安慰自己莹菱,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布吱瘩。 她就那樣靜靜地躺著道伟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪使碾。 梳的紋絲不亂的頭發(fā)上蜜徽,一...
- 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼隔躲!你這毒婦竟也來了缕允?” 一聲冷哼從身側(cè)響起,我...
- 序言:老撾萬榮一對(duì)情侶失蹤蹭越,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后教届,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體响鹃,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年案训,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了买置。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
- 正文 年R本政府宣布,位于F島的核電站家夺,受9級(jí)特大地震影響脱柱,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拉馋,卻給世界環(huán)境...
- 文/蒙蒙 一榨为、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧煌茴,春花似錦随闺、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至合住,卻和暖如春绰精,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背透葛。 一陣腳步聲響...
- 正文 我出身青樓硫椰,卻偏偏與公主長(zhǎng)得像繁调,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子靶草,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- https://blog.csdn.net/qq_25800311/article/details/8976254...
- 原地堆排序思想 對(duì)于已經(jīng)“堆化”的數(shù)據(jù)蹄胰,堆頂?shù)脑厥亲畲蟮模瑢?duì)應(yīng)到數(shù)組就是數(shù)組的第一個(gè)元素是最大的奕翔,原地的堆排序就...
- 堆基本概念 堆排序是一個(gè)很重要的排序算法裕寨,它是高效率的排序算法,復(fù)雜度是O(nlogn)派继,堆排序不僅是面試進(jìn)場(chǎng)考的...
- 堆排序就是把最大堆堆頂?shù)淖畲髷?shù)取出宾袜,將剩余的堆繼續(xù)調(diào)整為最大堆,再次將堆頂?shù)淖畲髷?shù)取出(最大堆調(diào)整的遞歸運(yùn)算)驾窟,這...
- 基礎(chǔ)堆排序和 Heapify 這一節(jié)我們介紹兩個(gè)使用堆或者說基于堆的思想進(jìn)行排序的算法。 思路1:一個(gè)一個(gè)地往最大...