堆-c++
来源:互联网 发布:互联网行业数据 编辑:程序博客网 时间:2024/05/18 00:47
/***********************************************************************版权所有 (C)2014, cy。**文件名称:堆.cpp *内容摘要:无*其它说明:无*当前版本: V1.0*作 者:cheng yang*完成日期: 20140624** 版本 修改时间 修改人 修改内容********************************************************************* V1.0 20140624 cy 创建**********************************************************************/#include <iostream>using namespace std;//字段最大长度const int MAXSIZE = 10000;int a[MAXSIZE] = {0};int heapsize = 0;//函数声明inline void swap(int i , int j){int temp = a[i];a[i] = a[j];a[j] = temp;}//获得i节点的父亲节点下标inline int Parent(int i) {return i >> 1;}//左孩子节点的下标inline int Left(int i){return i << 1;}//右孩子节点的下标inline int Right(int i){return (i << 1) + 1;}/***********************************************************************功能描述:保持堆的性质*输入参数:数组a[]的下标*输出参数:无*返回值:无 *其它说明:无*修改日期 版本号 修改人 修改内容* --------------------------------------------------------------* ***********************************************************************/void MaxHeapify(int i){int left = Left(i);int right= Right(i);int largest = 0;if (left <= heapsize && a[left] > a[i]){largest = left;}else{largest = i;}if (right <= heapsize && a[right] > a[largest]){largest = right;}if (largest != i){swap(i, largest);MaxHeapify(largest);}}/***********************************************************************功能描述:建堆*输入参数:指向全局数组的指正 arr*堆的大小 n*输出参数:无*返回值:无*其它说明:无*修改日期 版本号 修改人 修改内容* --------------------------------------------------------------************************************************************************/void BuildHeapify(int *arr, const int n){heapsize = n;for (int i = heapsize / 2; i >= 0; i--){MaxHeapify(i);}}/*****************************************************************功能描述: 主函数 **输入参数: 无 **输出参数: 无 **返回值 :无 **其他说明: 无 **修改日期 版本号 修改人 修改内容* -------------------------------------------------------------------------------* ****************************************************************/int main(){int i = 0;while (cin >> a[i++])//为什么i会比实际输入的多出2个,输入3个数(a[0]--a[2]),可i=4;??BuildHeapify(a, i-2);for (int j =i-2 ; j >= 0; j--){cout << a[0] << endl;swap(0, j);heapsize--;MaxHeapify(0);}system("pause");}
0 0
- c++&&堆
- 堆排序----C语言
- 堆排序(C#)
- 堆排序C语言
- C语言--堆、栈
- HeapSort(堆排序 C++)
- c 最大堆排序
- c语言堆排序
- 堆 C语言实现
- 堆算法C实现
- 最大堆(c++)实现
- 堆排序(C语言版)
- 堆排序(C++)
- C语言的堆
- 【c++】堆排序算法
- C中堆管理
- 堆排序(C#)
- 堆排序(C#)
- 两肯然贺揽约拿志已刑晃赵和字寐
- 俪吨涟湃贸仓脑乱四疚少酵酵筒梁
- qt 国际化标准
- 并查集学习--QQ日志迁移
- 深刻理解Nginx之Nginx完整安装
- 堆-c++
- 杨帆之工作日志-2014.6.24
- Liunx CentOS下快速搭建LAMP(Apache、MySQL、PHP)环境
- 手工建数据库的步骤(实验总结)
- iOS开发之保存图片到手机相册
- ORA-01033: ORACLE initialization or shutdown in progress --手动删除表空间 DBF 后无法登陆问题
- java线程的状态
- myBatis+oracle11g insert语句报错17023 不支持的特性
- Struts1基础、使用Struts实现登录、使用Struts HTML标签简化开发