2 |
26 Feb 07 |
jari |
1 |
/* |
2 |
26 Feb 07 |
jari |
Copyright @ 1999-2005, The Institute for Genomic Research (TIGR). |
2 |
26 Feb 07 |
jari |
All rights reserved. |
2 |
26 Feb 07 |
jari |
4 |
*/ |
2 |
26 Feb 07 |
jari |
5 |
/* |
2 |
26 Feb 07 |
jari |
* $RCSfile: MinMaxHeap.java,v $ |
2 |
26 Feb 07 |
jari |
* $Revision: 1.3 $ |
2 |
26 Feb 07 |
jari |
* $Date: 2005/03/10 15:40:35 $ |
2 |
26 Feb 07 |
jari |
* $Author: braistedj $ |
2 |
26 Feb 07 |
jari |
* $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 |
/* 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 |
|