基于visual Studio2013解决算法导论之007优先队列(堆实现)
生活随笔
收集整理的這篇文章主要介紹了
基于visual Studio2013解决算法导论之007优先队列(堆实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
優先隊列
解決代碼及點評
#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("隊列為空!\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; }代碼下載及其運行
代碼下載地址:http://download.csdn.net/detail/yincheng01/6858815
解壓密碼:c.itcast.cn
下載代碼并解壓后,用VC2013打開interview.sln,并設置對應的啟動項目后,點擊運行即可,具體步驟如下:
1)設置啟動項目:右鍵點擊解決方案,在彈出菜單中選擇“設置啟動項目”
2)在下拉框中選擇相應項目,項目名和博客編號一致
3)點擊“本地Windows調試器”運行
程序運行結果
轉載于:https://www.cnblogs.com/niulanshan/p/6175061.html
總結
以上是生活随笔為你收集整理的基于visual Studio2013解决算法导论之007优先队列(堆实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# this关键字
- 下一篇: Wait--查看等待