c++实现堆排序及运行实例结果
2017-12-27 00:08
183 查看
这是算法导论上的例题
可以参考以下伪代码
c++代码
运行结果
可以参考以下伪代码
c++代码
#include<iostream> using namespace std; //交换两数大小 void exchange(int &a,int &b) { int temp; temp=a; a=b; b=temp; } //左孩子,右孩子 int left(int i) { return i*2; } int right(int i) { return i*2+1; } //维护最大堆的函数 void maxHeapify(int array[], int len, int i) { int l=left(i),r=right(i); int largest =i; if(l<len&&array[l]>array[largest]) largest=l; if(r<len&&array[r]>array[largest]) largest=r; if(largest!= i) { exchange(array[largest],array[i]); maxHeapify(array,len,largest); // 递归调整 } } //排序 void heapSort(int array[],int size) { for(int i=size/2-1;i>=0;--i) { maxHeapify(array,size,i); } for(int i=size-1;i>=1;--i) { exchange(array[0], array[i]); maxHeapify(array,i,0); } } int main() { int Array[10] = {16,4,10,14,7,9,3,2,8,1}; cout<<"原始堆为:"<<endl; for(int i=0;i<10;++i) cout<<Array[i]<<" "; heapSort(Array,10); cout<<endl<<"经过维护后的最大堆为:"<<endl; for(int i=0;i<10;++i) cout<<Array[i]<<" "; return 0; }
运行结果
相关文章推荐
- c++实现堆排序及运行实例结果
- c++实现堆排序及运行实例结果
- c++实现堆排序及运行实例结果
- c++实现堆排序及运行实例结果
- c++实现堆排序及运行实例结果
- c++实现堆排序及运行实例结果
- c++实现堆排序及运行实例结果
- c++实现堆排序及运行实例结果
- c++实现堆排序及运行实例结果
- c++实现堆排序及运行实例结果
- 雇佣问题(hireassistant)-c++代码实现及运行实例结果
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 雇佣问题原址排列给定数组(randomize In Place)-c++代码实现及运行实例结果
- 球与箱子-c++代码实现及运行实例结果
- 在线雇佣问题(onlineMaximumHireAssistant)-c++代码实现及运行实例结果
- 生日悖论扩展引申1-c++代码实现及运行实例结果
- 生日悖论扩展引申2-c++代码实现及运行实例结果
- c++实现快速排序quickSort及运行实例结果
- c++实现计数排序countingSort及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果