美文网首页
【数据结构与算法】排序-3

【数据结构与算法】排序-3

作者: 住阳台的猫 | 来源:发表于2022-03-20 21:36 被阅读0次

堆排序是利用堆这种数据结构所设计的一种排序算法,堆是一个近似完全二叉树的结构,堆排序中我们用到的堆满足一个性质,孩子节点的值总是大于等于或者小于等于它的父亲节点的值,根节点最大的我们叫做大顶堆,根节点最小的叫做小顶堆(可以先自己学一下,实在不懂的话等我后续)

堆排序的思想分为两步:

  1. 构建初始堆,把待排序的数组构建成大顶堆或者小顶堆
  2. 将堆顶元素与最后一个元素交换,并将最后一个元素从堆中断开
  3. 重新构建堆
  4. 重复2、3步,直到堆中只剩下一个元素

以大顶堆为例,构建堆的时候,如果新插入的数据比父亲节点要大,那么就和父节点进行交换,直到父节点大于等于当前节点为止;堆顶元素与最后一个元素进行交换,就是把最大的数放在最后面,因为最大的数位置确定了,所以要把它从堆中断开,如果没有断开,再拿别的数和他交换就会乱掉;交换完之后之前在堆末尾的一个比较小的数就到了堆顶,这事就需要对堆进行重新排序,让堆重新变为大顶堆,具体步骤是拿堆顶节点和它的两个孩子节点作比较,如果孩子节点更大,就进行交换,如果两个孩子节点都比父节点大,那就交换更大的那个,例如左孩子节点大于右孩子节点大于父节点,那就是用左孩子结点和父节点进行交换,直到变成一个新的大顶堆;重复2、3步骤,就可以每次把堆中剩余的数中的最大值拿到最后面,最后就可以得到一个从小到大排序的数组


相关文章

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • (转)排序算法

    排序算法点这里 数据结构与算法——计数排序、桶排序、基数排序

  • 算法与数据结构(六):堆排序

    title: 算法与数据结构(六):堆排序tags: [算法与数据结构, C语言, 堆排序]date: 2019-...

  • Hash算法

    数据结构与算法分析:大纲数据结构:数组算法:hash算法算法:排序算法Java实现 1 Hash算法? 将任意长度...

  • 数据结构与算法 - 排序与搜索

    文章来源:数据结构与算法(Python) 排序与搜索排序算法(英语:Sorting algorithm)是一种能将...

  • python 简单排序

    数据结构与算法 01 我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分...

  • 10分钟看懂10大经典算法(Swift代码实现)

    排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进...

  • 排序算法

    排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序。 内部排序是数据记录在内存中...

  • Python实现十大经典排序算法

    排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进...

  • 美团149道面试题,全会拿40Koffer没问题

    一、数据结构与算法基础 1· 说一下几种常见的排序算法和分别的复杂度。 2· 用Java写一个冒泡排序算法 3· ...

网友评论

      本文标题:【数据结构与算法】排序-3

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