資料結構 堆排序一(heap sort)

2021-09-30 00:19:26 字數 2111 閱讀 7829

普通佇列:   先進先出, 後進後出

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...