mev-4.0.01/source/org/tigr/microarray/mev/motif/MinMaxHeap.java

Code
Comments
Other
Rev Date Author Line
2 26 Feb 07 jari 1 /*
2 26 Feb 07 jari 2 Copyright @ 1999-2005, The Institute for Genomic Research (TIGR).
2 26 Feb 07 jari 3 All rights reserved.
2 26 Feb 07 jari 4 */
2 26 Feb 07 jari 5 /*
2 26 Feb 07 jari 6  * $RCSfile: MinMaxHeap.java,v $
2 26 Feb 07 jari 7  * $Revision: 1.3 $
2 26 Feb 07 jari 8  * $Date: 2005/03/10 15:40:35 $
2 26 Feb 07 jari 9  * $Author: braistedj $
2 26 Feb 07 jari 10  * $State: Exp $
2 26 Feb 07 jari 11  */
2 26 Feb 07 jari 12 package org.tigr.microarray.mev.motif;
2 26 Feb 07 jari 13
2 26 Feb 07 jari 14 public class MinMaxHeap {
2 26 Feb 07 jari 15     Heap heap;   /* minheap */
2 26 Feb 07 jari 16     Heap maxheap;    /* maxheap */
2 26 Feb 07 jari 17     int  hpsz;       /* heap size */
2 26 Feb 07 jari 18     int  nfree;      /* #items available */
2 26 Feb 07 jari 19     int[]    avail;      /* list of available item no */
2 26 Feb 07 jari 20     
2 26 Feb 07 jari 21     
2 26 Feb 07 jari 22     
2 26 Feb 07 jari 23     public MinMaxHeap(int hpsz, int d) {
2 26 Feb 07 jari 24   avail=new int[hpsz];
2 26 Feb 07 jari 25   heap=new Heap(hpsz,d);
2 26 Feb 07 jari 26   maxheap=new Heap(hpsz,d);
2 26 Feb 07 jari 27   this.hpsz=hpsz;
2 26 Feb 07 jari 28   nfree = hpsz;
2 26 Feb 07 jari 29   for (int i=0; i<hpsz; i++) avail[i] = i;
2 26 Feb 07 jari 30     }
2 26 Feb 07 jari 31     
2 26 Feb 07 jari 32 /* NULL == not inserted; -1 == inserted but none deleted  */
2 26 Feb 07 jari 33     public void InsertMheap(double key) {
2 26 Feb 07 jari 34   int i=0;
2 26 Feb 07 jari 35   if (nfree > 0) {
2 26 Feb 07 jari 36       i = avail[nfree-1];
2 26 Feb 07 jari 37       nfree--;
2 26 Feb 07 jari 38   } else if ((maxheap.kvec[maxheap.h[0]]) < -key) {
2 26 Feb 07 jari 39       i=maxheap.delminHeap();
2 26 Feb 07 jari 40       heap.rmHeap(i);
2 26 Feb 07 jari 41   } //else return NULL;
2 26 Feb 07 jari 42   heap.insrtHeap(i,key);
2 26 Feb 07 jari 43   maxheap.insrtHeap(i,-key);
2 26 Feb 07 jari 44     }
2 26 Feb 07 jari 45     
2 26 Feb 07 jari 46 }
2 26 Feb 07 jari 47