堆排序

作者: Soooooooooul | 来源:发表于2018-01-04 17:31 被阅读0次

堆排序

堆:heap 一种数据结构 完全二叉树(每个父节点最多只有两个子节点左节点和右结点) 常用来做堆排序和二叉树排序 每一个堆都可以用数组来表示 节点与数组下表对应关系为:

堆顶位置为数组第一个下标    给定一个数组下标i  父节点i =i/2; 左子节点 = i*2 右子节点= 2i+1;

二叉堆一般分为 最大堆 和 最小堆 最大堆是每一个父节点都大于它的子节点 最小堆与之相反

一个堆与数组的对应关系

 堆排序的步骤:

1、先把一个数组表示为一个堆,并且对这个堆进行最大堆排序

2、将排完序的堆顶元素与最后一个元素交换位置并且对交换位置后的堆再次进行堆排序(将倒数第二个元素不断与堆顶元素进行比较构造成最大堆),最后一个元素已经排完序 在对前面的元素进行排序 每次出来一个这次排序最大的元素 

堆排序的C语言版 堆排序第二步

堆排序效率:时间复杂度为(nlogn) 空间复杂度(O(1)) 该排序为不稳定的排序。

相关文章

  • 堆排序

    目录 1.堆排序介绍 2.堆排序图文说明 3.堆排序的时间复杂度和稳定性 4.堆排序实现 堆排序介绍 堆排序(He...

  • 堆排序---基础篇

    本文主要介绍堆排序的一些基本过程和分析。 大纲 堆排序简介 堆排序代码实现 1. 堆排序简介 1.1 堆排序的存储...

  • 堆和堆排序

    最小K个数 堆排序 堆排序

  • JS实现堆排序

    原理 堆排序原理 实现 说明 堆排序对大文件很有效 堆排序是不稳定排序

  • iOS算法总结-堆排序

    iOS算法总结-堆排序 iOS算法总结-堆排序

  • 堆排序

    转载:图解排序算法(三)之堆排序 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选...

  • 排序

    原创 堆排序: 使用visit数组从本质出发获取大顶堆排序。

  • 堆排序

    堆排序

  • C++基础入门之模板堆排序(上):模板上的list的创造与操作

    整段源码链接C++的模板元堆排序 要点 组建数据结构list 组建对list的各种基本操作 堆排序中组建堆排序个个...

  • 3.2-选择排序-堆排序

    参考链接 选择排序:堆排序(Heap Sort) 白话经典算法系列之七 堆与堆排序 堆排序与快速排序,归并排序一样...

网友评论

      本文标题:堆排序

      本文链接:https://www.haomeiwen.com/subject/oetdnxtx.html