当前位置:  技术问答>java相关

谁能讲讲堆数据结构(Heap)是怎么回事?

    来源: 互联网  发布时间:2015-04-26

    本文导语:  因为不明白Heap,所以以下代码有些看不明白。 请指教 谢谢! 附Java代码: public class Heap {   private Comparable[] heap;   private int size;   private int capacity;   private int capacityIncrement;   /**    * Construct a heap wit...

因为不明白Heap,所以以下代码有些看不明白。
请指教
谢谢!

附Java代码:
public class Heap
{
  private Comparable[] heap;
  private int size;
  private int capacity;
  private int capacityIncrement;

  /**
   * Construct a heap with initial capacity 10 
   * and capacity increment 0
   *
   * @since   1.0
   * */
  public Heap()
  {
    this(10, 0);
  }

  /**
   * Construct a heap with initial capacity c
   * and capacity increment 0
   * 
   * @param c   initial capacity for heap
   * @exception IllegalArgumentException   c is negative
   * @since   1.0
   * */
  public Heap(int c)
  {
    this(c, 0);
  }

  /**
   * Construct a heap with initial capacity c
   * and capacity increment ci
   * 
   * @param c   initial capacity for heap
   * @param ci  capacity increment for heap
   * @exception IllegalArgumentException   c or ci is negative
   * @since   1.0
   * */
  public Heap(int c, int ci)
  {
    if (c  A.length)
      throw new IllegalArgumentException();

    int child  = pos;
    int parent = child / 2;
    Comparable value = A[child];

    while (parent > 0)
      {
if (A[parent].compareTo(value)  A.length
   * @since   1.0
   * */
  private static void siftDown(Comparable[] A, int size, int pos)
  {
    if (pos  size || size > A.length)
      throw new IllegalArgumentException();

    int parent = pos;
    int child  = 2 * parent;
    Comparable value = A[parent];

    while (child  A.length)
      throw new IllegalArgumentException();

    for (int i = size / 2; i > 0; i--)
      siftDown(A, size, i);
  }
}



|
堆就是一棵比较特殊的二叉树,对于最小堆(min Heap)他的每个节点的值都小于其孩子的值,最大堆相反。主要是用来做排序比较高效。
具体可以看数据结构的书。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个菜鸟的请求: 哪位前辈能给晚辈讲讲“匿名类”
  • 请问如何改变以创建窗口的背景色,该用什么函数,能讲讲吗?
  • ★☆★可否讲讲cp命令是否和copy命令相同,如有不同,请指出!!谢了
  • 求解!给讲讲原理,谢谢谢!
  • linux 双网卡同时工作怎么做啊,请高手给讲讲哈
  • 谁给我讲讲回调函数的概念???
  • 请教哪位帮我讲讲JNDI
  • 帮我讲讲Apache,Tomcat,JServ的关系,多谢。
  • 哪位大侠能讲讲怎么将一个用EJB写的站点做成安装程序?
  • PrepareStatement的问题,哪位有空给我讲讲
  • 哪位好心人能给我讲讲?
  • ****菜鸟问题:谁能给我讲讲端口?***
  • 谁能跟我讲讲javabeans究竟是做什么的,为什么说它好
  • 谁能给我讲讲tomcat4.0.3的Listener怎么用?
  • 谁能给我讲讲“ulimit -m”命令使用来干什么的?
  • 请问谁能讲讲使用软件实现的mcu原理。
  • 哪位高手能详细的讲讲内核中slab allocator到底是什么?
  • 那位前辈能给讲讲oc4j阿?
  • 谁能讲讲网页发手机短信的原理?使用applet发送的吗?
  • 请给我讲讲clone()方法究竟怎么复制对象,小妹谢谢大虾们了!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3