堆排序
1.原理:利用最大(小)堆进行排序。
2.步骤:
①首先最大(小)堆;
②把堆顶跟完全二叉树的最后一个子叶进行交换,再把最后一个子叶放在数组的最后一位;
③重复以上①②。
3.适用场景:性能好,不稳定。适用于只求最大(小)M个数。

与快速排序不同的地方:
1.原理不同,堆排序是利用最大(小)堆进行排序,而快速排序是在冒泡排序法上进行改进的一种递归排序(从上到下)。
2.适用场景不同:快排不适用于基本有序或者逆序,也就是说适用于无序。但是堆排序对有序无要求。并且堆排序的性能稍微比快排好。快排平均时间复杂度是O(nlogn),最好也是O(nlogn),但是最坏是O(n2)。
而堆排序最好最坏都是O(nlogn)。

3.什么叫堆排序?与快速排序有什么不同?相关推荐

  1. 堆排序--采用快速排序(利用大堆实现升序,小堆实现降序)

    对堆进行排序,利用大堆实现升序,小堆实现降序.例如升序的实现,将较大数据存放在最后面,依次往前存放数据.具体为交换第一个元素和最后一个元素,再将不包含最后一个元素的堆进行下调,使堆保持大堆,将最大数据 ...

  2. 排序(堆排序,快速排序,归并排序)

    前言:如果内容不全,说明还没复习到,复习时会陆续更新. 三种排序比较 堆排序,快速排序,归并排序平均复杂度都是O(nlogn).其中归并排序时间最稳定(最好最差的时间复杂度差距不大).快速排序平均时间 ...

  3. 堆和堆排序:为什么说堆排序没有快速排序快

    ------ 本文是学习算法的笔记,<数据结构与算法之美>,极客时间的课程 ------ 我们今天讲另外一种特殊的树,"堆(Heap)".堆这种数据结构的应用场景非常多 ...

  4. 28 | 堆和堆排序:为什么说堆排序没有快速排序快?

    如何理解"堆" 堆排序是一种原地的.时间复杂度为 O(nlogn) 的排序算法 堆的两个特点: 一颗完全二叉树 堆中每个节点都必须大于等于(或者小于等于)其左右子节点的值: 对于每 ...

  5. 十大排序算法(C++)(时间复杂度O(nlogn)篇:希尔排序、堆排序、快速排序、归并排序)

    希尔排序 希尔排序本质上是对插入排序的一种优化,它既有插入排序的简单,同时也解决了插入排序每次只交换相邻两个元素的缺点.插入排序过程如下: 1.将数组按照一定的间隔分为多个子数组(每跳跃一定间隔取一个 ...

  6. (C语言)八大排序之:堆排序、快速排序

    堆排序( heap sort )  reference:http://mp.weixin.qq.com/s/mY_bVJPWhzZWL5ZdooA6tw 1 /* FILE: heapSort.c2 ...

  7. java版排序算法简介及冒泡排序以及优化,选择排序,直接插入排序,希尔排序,堆排序,快速排序及其优化前言 2 分类 2 稳定性 3 时间复杂度 4 Java实现版本 5 1、冒泡排序 6 2、选择排序

    好吧 ~~csdn太难用了....尼玛...写了半天的也无法弄进去...lz正在找更好地博客,or放在github上打算.. 下边是lz自己的有道云分享,大概内容是 http://note.youda ...

  8. 【八大排序详解~C语言版】直接插入排序-希尔排序- 直接选择排序-堆排序-冒泡排序-快速排序-归并排序-计数排序

    八大排序 1.直接插入排序 2.希尔排序 3.直接选择排序 直接选择排序改进 4.堆排序 1.建堆 2.利用堆删除思想来进行排序 5.冒泡排序 6.快速排序 递归实现 非递归实现 7.归并排序 递归实 ...

  9. 七大排序算法—图文详解(插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序)

    作者:渴望力量的土狗 博客主页:渴望力量的土狗的博客主页 专栏:数据结构与算法 工欲善其事必先利其器,给大家介绍一款超牛的斩获大厂offer利器--牛客网 点击免费注册和我一起刷题吧 目录 插入排序: ...

  10. 数据结构:直接插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序 归并排序

    一.什么是排序 排序就是将一组杂乱无章的数据按照一定的次序组织起来,此次序可以是升序也可以是降序 二.为什么需要进行排序 为了满足一些需求,比如在比较学生的成绩时,我们就需要给所有学生的成绩排一个顺序 ...

最新文章

  1. DFS+剪枝 hdu 5113 Black And White
  2. Nodejs的express使用教程
  3. Kafka文件存储机制那些事
  4. 微软示例数据仓库AdventureWorksDW 与数据仓库概述
  5. TeliaSonera计划2018年推出5G服务
  6. 【流媒體】Android 实时视频采集—Camera预览采集
  7. java 反射基础知识
  8. 计算机系统基础知识——校验码之海明码(Hamming Code)
  9. OpenCV之图像腐蚀
  10. caffe FCN Ubuntu16.0
  11. React Native重构路线图发布!
  12. 新书推荐 | Java核心技术卷Ⅰ:基础知识(原书第11版)
  13. 米家扫地机器人是石头代工_石头扫地机器人T4全面评测 支持软件虚拟墙,清扫更高效...
  14. 怎么解决redis雪崩和穿透
  15. 空芯线圈电感计算公式
  16. 浅析泛在电力物联网及国网公司“三型两网”战略
  17. 如何安装用友NC6.5
  18. c语言中整形变量,C语言基本数据类型:整型(int)用法详解
  19. CSS:div中文字换行设置
  20. c语言范例开发大全DVD,C语言程序开发范例宝典(光盘内容另行下载,地址见书封底)...

热门文章

  1. 微信进行证书相关操作(退款,发放优惠券等)时报System.Security.Cryptography.CryptographicException: 出现了内部错误。...
  2. E-UTRA channel bandwidths per operating band (36.101)
  3. Android 聊天软件客户端
  4. 主流浏览器及对应内核
  5. 推荐一些不错的开源免费易上手的web前端框架
  6. 今天第一次在对外经贸大学吃午饭~
  7. 第一章:SpringBoot入门
  8. apache 创建多端口监听
  9. iOS开发debug集锦
  10. NDK,动态链接库,JNI