zoukankan      html  css  js  c++  java
  • 什么时堆,以及堆排序的原理

    真诚的感谢作者:本来来源:https://blog.csdn.net/MaxineZhou/article/details/89314044

    1. 什么是堆

    答:堆是一个特殊的完全二叉树

     

     堆的结构特点:

    大顶堆:所有的父节点都比子节点大

    小顶堆:所有的父节点都比子节点小

     大顶堆                                                                                                                                             小顶对

    5. 堆的存储

    那么堆是如何存在在顺序表中的呢?如图所示,如果父节点的编号为k,那么他的做儿子的编号为2k右儿子的编号为2k+1;他总儿子的编号为x,那么他父亲的编号为x/2

     2. 堆的建立和堆排序

     80先和它的两个儿子20和70比较,80大于两个儿子且20是较小的儿子,所以两者交换,保证交换上去的父节点是比两个儿子小的,80再和现在的两个儿子30和50比较,依然和选择和30做交换,最后和两个儿子60,40比较,最后和40做交换。先插入的数80最后找到了自己的位置。

    我在面试的时候问道过,从百万条数据中找出最大的10条数据的最优算法:

  • 相关阅读:
    pionter指针小结
    C++笔记 5
    C++笔记 3
    ipad safari 滚动(overflow)解决方案
    IE9 BUG overflow :auto 底部空白解决方案
    asp.net 导出EXCEL超高兼容(不用装Excel)
    jquery post 同步异步总结
    jquery-alert对话框
    左固定右边自适应框架
    删除Cookies
  • 原文地址:https://www.cnblogs.com/dousil/p/12882796.html
Copyright © 2011-2022 走看看