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

原创 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];父节点必须比子节点...

堆排序,以及stl中的堆应用

#include #include #include #include using namespace std; void recursive_max_heap_shift_down(int...

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

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

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

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

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

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

堆排序最大堆【算法导论】

  • 2014年01月08日 20:21
  • 250KB
  • 下载

计算机算法--最大堆实现堆排序(从大到小输出)

1 最大堆实现堆排序(从大到小输出)示例输入(11个数,第一个数表示元素个数):100123456789示例输出:9876543210     public class faith { ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最小(大)堆应用---堆排序
举报原因:
原因补充:

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