當(dāng)前位置:
首頁(yè) >
基于visual Studio2013解决算法导论之007优先队列(堆实现)
發(fā)布時(shí)間:2025/7/25
48
豆豆
生活随笔
收集整理的這篇文章主要介紹了
基于visual Studio2013解决算法导论之007优先队列(堆实现)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目
優(yōu)先隊(duì)列
解決代碼及點(diǎn)評(píng)
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <time.h>int Parent(int i) {return (i-1)/2; } int LeftChild(int i) {return 2*i + 1; } int RightChild(int i) {return 2*i + 2; }int Maximum(int *pnArr, int nLen) {if (NULL == pnArr || nLen == 0){printf("隊(duì)列為空!\n");return -1;}return pnArr[0]; }void Swap(int *a, int *b) {int nTmp = *a;*a = *b;*b = nTmp; }void MaxHeapify(int *pnArr, int nLen, int i) {int LChild = LeftChild(i);int RChild = RightChild(i);int nMaxPos;if (LChild < nLen && pnArr[LChild] > pnArr[i]){nMaxPos = LChild;}else{nMaxPos = i;}if (RChild < nLen && pnArr[RChild] > pnArr[nMaxPos]){nMaxPos = RChild;}if (nMaxPos != i){Swap(&pnArr[nMaxPos], &pnArr[i]);MaxHeapify(pnArr, nLen,nMaxPos);}}void BuildMaxHeap(int *pnArr, int nLen) {for (int i = Parent(nLen -1); i >= 0; i--){MaxHeapify(pnArr, nLen, i);} }void HeapSort(int *pnArr, int nLen) {BuildMaxHeap(pnArr, nLen);for (int i = nLen - 1; i > 0; i--){Swap(&pnArr[i], &pnArr[0]);nLen--;MaxHeapify(pnArr, nLen, 0);} }void PrintArr(int *pnArr, int nLen) {for (int i = 0; i < nLen; i++){printf("%d ", pnArr[i]);}printf("\n"); }int main() {int nArr[10] = {4,1,3,2,16,9,10,14,8,7};PrintArr(nArr, 10);HeapSort(nArr, 10);PrintArr(nArr, 10);system("pause");return 0; }代碼下載及其運(yùn)行
代碼下載地址:http://download.csdn.net/detail/yincheng01/6858815
解壓密碼:c.itcast.cn
下載代碼并解壓后,用VC2013打開(kāi)interview.sln,并設(shè)置對(duì)應(yīng)的啟動(dòng)項(xiàng)目后,點(diǎn)擊運(yùn)行即可,具體步驟如下:
1)設(shè)置啟動(dòng)項(xiàng)目:右鍵點(diǎn)擊解決方案,在彈出菜單中選擇“設(shè)置啟動(dòng)項(xiàng)目”
2)在下拉框中選擇相應(yīng)項(xiàng)目,項(xiàng)目名和博客編號(hào)一致
3)點(diǎn)擊“本地Windows調(diào)試器”運(yùn)行
程序運(yùn)行結(jié)果
轉(zhuǎn)載于:https://www.cnblogs.com/niulanshan/p/6175061.html
總結(jié)
以上是生活随笔為你收集整理的基于visual Studio2013解决算法导论之007优先队列(堆实现)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C# this关键字
- 下一篇: Wait--查看等待