最小(大)堆应用---堆排序

原创 2006年05月30日 10:19:00

#include<iostream>
#include"MinHeap.h"
using namespace std;

template<class T>
void HeapSort(T a[],int n){
 T temp;
 MinHeap<T> *m_heap = new MinHeap<T>(a,n);
 for(int i = n-1; i >= 1; i--){//a[0]与a[i]交换,重新调整堆0--->i-1
   
   temp = a[i];
   a[i] = a[0];
   a[0] = temp;
   m_heap->FilterDown(0,i-1);
 }
}

void main(){
 int a[5] = {3,2,1,4,5};
    HeapSort(a,5);
 for(int i = 0; i < 5; i++)
  cout<<a[i]<<" ";
 cout<<endl;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

[大、小根堆应用总结一]堆排序的应用场景

前言 在整理算法题的时候发现,大根堆(小根堆)这种数据结构在各类算法中应用比较广泛,典型的堆排序,以及利用大小根堆这种数据结构来找出一个解决问题的算法最优解。因此,我打算单独将关于堆的应用独立总结...

堆、堆排序及其应用

堆是一种常见的数据结构,其结构类似树,以数组形式存储数据。     下面来介绍两种堆,一种是最大堆,一种是最小堆。     最大堆的性质是:A[parent(i)]>=A[i];父节点必须比子节点...

第六章堆排序之“最小优先级队列”(练习6.5-3)

用最小堆实现最小优先级队列: //返回堆中关键字最小的元素 HeapMinimum() //去掉并返回堆中关键字最小的元素 HeapExtractMin() //将堆中元素x的关键字减小到k...

读《程序员编程艺术》之自造Java版本----最大堆排序实现最小K问题

在《程序员编程艺术》中有求最小k的最大堆排序算法,通过JAVA进行了实现,并输出结果。 在实现的过程中,尤其是最大堆中,自顶向下的更新是最容易出错的,本程序中巧妙的使用i和j的关系(父节点和子节点),...

prim算法改进,C语言,用堆排序找到最小边开始,可读取文件

1.不从节点1开始找,从图中最小的边开始找。其中求最小边用堆排序的算法 2.其余与yyprim类似; 3.将下面数据保存到1.t

算法入门--堆排序2(建立最小堆,从大到小)

#include #include int left(int i)//返回左孩子位置 { return 2*i; } int right(int i)//返回右孩子位置 { r...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)