堆排序的C++代码实现
来源:互联网 发布:国考一次上岸知乎 编辑:程序博客网 时间:2024/06/05 16:42
//交换位于i和j处的值void exchange(int *a,int i,int j){ int temp = a[i]; a[i] = a[j]; a[j] = temp;}//保持最大堆的特性void max_heapify(int *a,int i,int length){ int l = i*2+1;//求左孩子结点,由于数据是从0开始计数,故需要乘以2加1 int r = (i+1)*2;//求右孩子结点 int largest = i; if (l<=length&&a[l]>a[i]) { largest = l; } if (r<=length&&a[r]>a[largest]) { largest = r; } if (largest != i) { exchange(a,i,largest); max_heapify(a,largest,length);//递归使子结点满足最大堆的特性 }}void heap_sort(int *a,int len){ int length = len-1; //由于C++的下标是从0开始,故长度在原有的长度上-1 int i; for (i = length/2;i>=0;i--) //从叶结点开始,创建最大堆 { max_heapify(a,i,length); } for (i = length;i>0;i--) //根据最大堆进行排序 { exchange(a,0,i); max_heapify(a,0,i-1); }}
0 0
- 堆排序的C实现
- 堆排序的实现(c++)
- 堆排序+代码实现
- 堆排序代码实现
- 堆排序代码实现
- 堆排序算法的C++实现代码
- 堆排序的C++代码实现
- 堆排序的数组实现代码
- 堆排序的c++实现代码
- 堆排序的代码实现与思考
- 堆排序的Java代码实现
- heapsort(堆排序)的代码实现
- 算法代码实现之堆排序,C/C++实现
- 选择排序、树形排序、堆排序的java代码实现
- 快速排序,归并排序,堆排序的java代码实现
- 堆排序的实现-C语言
- 堆排序的C语言实现
- 【C++】CLRS上的堆排序实现
- ROC阈值曲线
- 如何从 PL/SQL 存储函数返回数组
- 经典算法面试题
- 研大考研:2015西综考研专业分析与就业解析
- c++基本文件操作
- 堆排序的C++代码实现
- ViewPager和Fragment的组合使用
- swift代码创建控件之UILabel
- 学习spring必须java基础知识-PropertyEditor
- java多线程之路之执行器—Core Java学习
- linux的安装 命令
- Halcon-VC异常处理
- 水果分“凉热”吃时要注意
- android eclipse 生成内部还有native时候如何打包