`

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

 
阅读更多
堆排序的时间复杂性为nlog(n),空间复杂度为o(1),为比较排序的下界,因此具有非常好的性能,使用堆,也很容易实现堆排序.
#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;
}
分享到:
评论

相关推荐

    数据结构算法与应用-C++语言描述

    9.5.1 堆排序 293 9.5.2 机器调度 294 9.5.3 霍夫曼编码 297 9.6 参考及推荐读物 302 第10章 竞?303 10.1 引言 303 10.2 抽象数据类型WinnerTree 306 10.3 类WinnerTree 307 10.3.1 定义 307 10.3.2 类定义 307 ...

    数据结构、算法与应用--C++语言描述

    9.5.1 堆排序 293 9.5.2 机器调度 294 9.5.3 霍夫曼编码 297 9.6 参考及推荐读物 302 第10章 竞?303 10.1 引言 303 10.2 抽象数据类型WinnerTree 306 10.3 类WinnerTree 307 10.3.1 定义 307 10.3.2 类定义 307 ...

    数据结构算法与应用-C__语言描述

    9.5.1 堆排序 293 9.5.2 机器调度 294 9.5.3 霍夫曼编码 297 9.6 参考及推荐读物 302 第10章 竞?303 10.1 引言 303 10.2 抽象数据类型WinnerTree 306 10.3 类WinnerTree 307 10.3.1 定义 307 10.3.2 类定义 307 ...

    数据结构算法与应用-C C++语言描述

    9.5.1 堆排序 293 9.5.2 机器调度 294 9.5.3 霍夫曼编码 297 9.6 参考及推荐读物 302 第10章 竞?303 10.1 引言 303 10.2 抽象数据类型WinnerTree 306 10.3 类WinnerTree 307 10.3.1 定义 307 10.3.2 类定义 307 ...

    C语言归并、选择、直接插入、希尔、冒泡、快速、堆排序与顺序、二分查找排序.rar

    堆排序(Heap Sort):利用堆的性质进行排序,将数组构建成最大堆或最小堆,然后依次将堆顶元素与最后一个元素交换并重新调整堆,直到整个数组有序。 顺序查找(Sequential Search):逐个遍历数组元素,查找目标...

    数据结构算法与应用-C++语言描述.rar

    9.5.1 堆排序 293 9.5.2 机器调度 294 9.5.3 霍夫曼编码 297 9.6 参考及推荐读物 302 第10章 竞?303 10.1 引言 303 10.2 抽象数据类型WinnerTree 306 10.3 类WinnerTree 307 10.3.1 定义 307 10.3.2 类...

    堆排序算法.zip

    常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序等。 搜索算法:搜索算法用于在数据集中查找特定元素的算法。常见的搜索算法包括线性搜索、二分搜索等。 图算法:图算法用于处理图结构的数据...

    二叉堆的概念及其应用.pptx

    二叉堆的概念及其应用,里面包含果子合并、堆排序、鱼塘钓鱼、最小函数值、Sequence等重要题型的详细解析

    heap-visualization:二叉堆的 d3.js 可视化

    最小和最大堆(更改排序顺序或修改的比较器、getter、setter) 添加文字 比喻一个漏斗来解释它? 类似于谐波势的量子化能级? 应用示例:锦标赛、音序器? 添加 Leftist、Skew 和 Binomial 堆?

    Sorting-Visualizer:用于快速排序,合并排序,气泡排序和堆排序的Sorting Visualizer项目

    该项目的灵感来自于排序算法,并具有快速排序,合并排序,气泡排序和堆排序等功能。 通过此链接来欣赏应用程序 Create React App入门 该项目是通过引导的。 可用脚本 在项目目录中,可以运行: npm start 在开发...

    几种常见的排序方法

    5.堆排序: n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ ) 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的...

    PHP SPL标准库之数据结构堆(SplHeap)简单使用实例

    根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。二叉堆还常用于排序(堆排序)。 如下:最小堆(任意节点的优先级不小于它的子节点) 看看PHP SplHeap的实现: 显然它是一个抽象类,最大堆...

    lrucacheleetcode-Algorithms:所有常用算法的集合

    堆排序 时间复杂度 树木 莫里斯遍历 应用 - 检查二叉树是否是 BST - BST 的中序后继 - 特设 到相等数组元素的最小移动 笔记 C++中的随机数生成 面试资源 亚马逊面试问题 设计 LRU - 图算法 BFS/DFS 拓扑排序 ...

    数据结构算法与应用(C++语言描述).rar

    9.5.1 堆排序 293 9.5.2 机器调度 294 9.5.3 霍夫曼编码 297 9.6 参考及推荐读物 302 第10章 竞?303 10.1 引言 303 10.2 抽象数据类型WinnerTree 306 10.3 类WinnerTree 307 10.3.1 定义 307 10.3.2 类定义 307 ...

    C语言版数据结构与算法分析-严蔚敏经典视频教程

    01-001数据结构的概念和基本术语、...10-002堆排序、多关键字的排序、基数排序、排序时间复杂度的分析 10-003外部排序的基本过程、索引文件、哈希文件的结构 10-004多关键字文件的特点、倒排文件、判定树、二叉平衡树

Global site tag (gtag.js) - Google Analytics