基于visual Studio2013解决算法导论之006最大堆排序
来源:互联网 发布:单页制作软件 编辑:程序博客网 时间:2024/05/14 16:33
题目
最大堆排序
解决代码及点评
#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <time.h>void PrintArr(int *pnArr, int nLen){for (int i = 0; i < nLen; i++){printf("%d ", pnArr[i]);}printf("\n");}//返回i父节点下标int Parent(int i){return (i - 1) / 2;}//返回i左孩子下标int LeftChild(int i){return i * 2 + 1;}//返回i右孩子下标int RightChild(int i){return i * 2 + 2;}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);}}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调试器”运行
程序运行结果
0 0
- 基于visual Studio2013解决算法导论之006最大堆排序
- 基于visual Studio2013解决算法导论之001插入排序
- 基于visual Studio2013解决算法导论之002归并排序
- 基于visual Studio2013解决算法导论之012计数排序
- 基于visual Studio2013解决算法导论之055拓扑排序
- 基于visual Studio2013解决算法导论之001插入排序
- 基于visual Studio2013解决算法导论之007优先队列(堆实现)
- 基于visual Studio2013解决算法导论之045斐波那契堆
- 基于visual Studio2013解决算法导论之008快速排序算法
- 基于visual Studio2013解决面试题之0209最大堆排序
- 基于visual Studio2013解决算法导论之003雇佣问题
- 基于visual Studio2013解决算法导论之013基数排序
- 基于visual Studio2013解决算法导论之020单链表
- 基于visual Studio2013解决算法导论之026二叉树
- 基于visual Studio2013解决算法导论之027hash表
- 基于visual Studio2013解决算法导论之042单源最短路径
- 基于visual Studio2013解决算法导论之047赫夫曼编码
- 基于visual Studio2013解决算法导论之048红黑树
- 编程理论术语简记
- 曾经的美好,都已逝去
- netbeans apigen
- 男人喜欢娴静淡雅的中年女子
- windows 7 使用 scrapyd 监控 scrapy的 spider
- 基于visual Studio2013解决算法导论之006最大堆排序
- 例解 autoconf 和 automake 生成 Makefile 文件
- Android实现闪屏渐入渐出效果实例
- 系统开发之概述
- 网友的图解SQL
- 单链表的取元素算法
- 内边距、边框和外边距的关系
- 例解 Linux 下 make 命令
- 机加工(CAM)仿真初探