經典排序演算法 堆排序(逆序)

2021-09-19 08:36:35 字數 562 閱讀 4867

構建小頂堆

將堆頂元素與最後乙個元素交換並減小陣列範圍

對交換完的陣列進行向下調整

整體時間複雜度o(nlog n)

public

class

heapsort()

}//構建小頂堆

public

static

void

minheap

(int

a,int n)

}//小頂堆的向下調整

public

static

void

minheapfixdown

(int

a,int i,

int n)

//若子節點都比節點i大,則無需調整

if(a[min]

>= a[i]

)return

;//否則對i和min進行調整,並且繼續向下調整

swap

(a,min,i)

;minheapfixdown

(a,min,n);}

}

經典演算法 堆排序

堆排序是利用堆的性質來進行排序的乙個演算法。一 堆堆 英語 heap 是電腦科學中一類特殊的資料結構的統稱。堆通常是乙個可以被看做一棵樹的陣列物件。堆總是滿足下列性質 將根節點最大的堆叫做最大堆或大根堆,根節點最小的堆叫做最小堆或小根堆。常見的堆有二叉堆 斐波那契堆等。堆的定義如下 n個元素的序列當...

經典排序演算法 堆排序Heap sort

經典排序演算法 堆排序heap sort 堆排序有點小複雜,分成三塊 第一塊,什麼是堆,什麼是最大堆 第二塊,怎麼將堆調整為最大堆,這部分是重點 第三塊,堆排序介紹 第一塊,什麼是堆,什麼是最大堆 什麼是堆 這裡的堆 二叉堆 指得不是堆疊的那個堆,而是一種資料結構。堆可以視為一棵完全的二叉樹,完全二...

經典排序演算法 堆排序(Heap Sort)

首先堆是乙個完全二叉樹,但同時他具有這樣的要求 每乙個結點的值都大於或等於其左右孩子結點的值,稱為大頂堆 每乙個結點的值都小於或等於其左右孩子結點的值,稱為小頂堆。如下圖是乙個大頂堆 在此要補充乙個二叉樹的性質 二叉樹的某個節點下標為i,則它的左孩子的下標一定為2i,右孩子下標一定為2i 1。假如現...