大頂堆的實現 有詳細注釋

2021-10-10 08:17:42 字數 729 閱讀 5906

堆排序的實現 c語言

/*heap sort*/

/*交換陣列中的兩個元素*/

void swap(int arr, int idx1, int idx2)

/*堆化,根據定義調整為大頂堆*/

void max_heapify(int arr, int index, int num)

/*如果有右節點,且右節點值更大,則更新最大值索引*/

if((right < num) && (arr[right] > arr[largest_idx]))

/*如果最大值不是當前(index)非葉節點的值,則將當前節點和最大的子節點值交換*/

if(largest_idx != index)

return;

}/*建立大頂堆:把待排序序列,變成乙個大頂堆結構的陣列*/

void build_max_heap(int arr, int len)

return;

}/*堆排序函式*/

void heap_sort(int arr, int size)

/*根據堆定義建立大頂堆:其實是把待排列的序列變成乙個大頂堆結構的陣列*/

build_max_heap(arr, size);

/*交換堆頂和末尾節點,然後重置大頂堆*/

for(i = size-1; i > 0; i--)

return;

}

單鏈表 SList 實現 有詳細注釋

三個檔案 pragma once include include typedef int slistdatatype typedef struct slistnode slistnode 尾部插入 void slistpushback slistnode pphead,slistdatatype x...

順序棧的表示和實現(有詳細注釋)

include define overflow 0 定義 溢位 為0 define error 0 define ok 1 define maxsize 100 順序棧儲存空間的初始分配量 typedef int selemtype selemtype為資料型別 typedef int status...

大頂堆的建立

加入由乙個無序陣列 9,4,8,3,5,1,2,6,7,0 思路 先將無序陣列構建成乙個完全二叉樹 正 文 分 割 線 什麼是二叉樹?二叉樹模型 圈裡的數字代表著標號,而不是實際存放的資料 什麼是二叉樹 二叉數是只擁有兩顆子樹的樹,兩顆子樹分別被稱為 左子樹 和 右子樹 什麼是堆?堆是乙個特殊的完全...