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条数据的最优算法:

  • 相关阅读:
    1121 Django基本
    1121 爬虫简单面条版
    1118 DOM
    1114 CSS基础
    1116 前端的练习--博客界面
    1112 前端基础之标签
    仿优酷错误
    1107 python自定义实现ORM
    cesm1_2_2在南信大大型机上的移植以及运行简单case的步骤
    ERROR:105: Unable to locate a modulefile for 'xxx'
  • 原文地址:https://www.cnblogs.com/dousil/p/12882796.html
Copyright © 2011-2022 走看看