普通佇列: 先進先出, 後進後出
priority queue(優先佇列): 出隊順序與入隊順序無關; 和優先順序相關
葉子節點: 一棵樹當中沒有子結點(即度為0)的結點稱為葉子節點,簡稱「葉子」
從陣列下標1開始儲存, 最後乙個非葉子節點的索引: count/2
從陣列下標0開始儲存,最後乙個非葉子節點的索引: (count-1)/2
public class maxheap
public int size()
boolean isempty()
public void insert(int item)
// 取出最大的值
/// 索引最大堆
public class indexmaxheap
public int size()
boolean isempty()
// 傳入的i對使用者而言,是從0索引開始的
public void insert(int i, int item)
public int extractmax()
private void shiftdown(int k)
if(data[indexs[k]] >= data[indexs[j]])
int temp = indexs[k];
indexs[k] = indexs[j];
indexs[j] = temp;
k = j;
} }private void shiftup(int k) }
public void printmaxheap() }
public void printmaxindexheap() }
public static void main(string args)
system.out.println(maxheap.size());
maxheap.printmaxindexheap();
maxheap.printmaxheap();
int max = maxheap.extractmax();
system.out.println("max="+max);
maxheap.printmaxindexheap();
// system.out.println(maxheap.extractmax());
// maxheap.printmaxindexheap();
//
//
// int arr = ;
// maxheap.printmaxheap();
}}
資料結構 堆排序 堆排序 Heap Sort
堆排序是一種選擇排序,其時間複雜度為o nlogn 堆的定義 n個元素的序列當且僅當滿足下列關係之一時,稱之為堆。情形1 ki k2i 且ki k2i 1 最小化堆或小頂堆 情形2 ki k2i 且ki k2i 1 最大化堆或大頂堆 其中i 1,2,n 2向下取整 若將和此序列對應的一維陣列 即以一...
資料結構 堆排序
include include void maxheapify int a,int length,int i void buildmaxheapify int a,int length void heapsort int a,int length void main void printf heap...
資料結構 堆排序
1 堆排序的時間複雜度與歸併排序相同,o nlogn 堆排序的優勢在與他只需要固定數量的額外空間,堆排序要比空間複雜性為o n 的歸併排序稍微慢一些,但是比空間複雜性為o 1 的歸併排序要快。2 對序列 26,5,77,1,61,11,59,15,48,19 進行堆排序 過程 調整最大堆 二叉堆 v...