home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / Extras / OSpace / jgl.exe / jgl_2_0 / COM / objectspace / jgl / Heap.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-03-12  |  1.7 KB  |  90 lines

  1. package COM.objectspace.jgl;
  2.  
  3. public class Heap {
  4.    private Heap() {
  5.    }
  6.  
  7.    public static void pushHeap(BidirectionalIterator var0, BidirectionalIterator var1) {
  8.       HashComparator var2 = new HashComparator();
  9.       pushHeap(var0, var0.distance(var1) - 1, 0, var1.get(-1), var2);
  10.    }
  11.  
  12.    public static void pushHeap(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
  13.       pushHeap(var0, var0.distance(var1) - 1, 0, var1.get(-1), var2);
  14.    }
  15.  
  16.    static void pushHeap(BidirectionalIterator var0, int var1, int var2, Object var3, BinaryPredicate var4) {
  17.       for(int var5 = (var1 - 1) / 2; var1 > var2 && var4.execute(var0.get(var5), var3); var5 = (var5 - 1) / 2) {
  18.          var0.put(var1, var0.get(var5));
  19.          var1 = var5;
  20.       }
  21.  
  22.       var0.put(var1, var3);
  23.    }
  24.  
  25.    public static void popHeap(BidirectionalIterator var0, BidirectionalIterator var1) {
  26.       popHeap(var0, var1, new HashComparator());
  27.    }
  28.  
  29.    public static void popHeap(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
  30.       Object var3 = var1.get(-1);
  31.       var1.put(-1, var0.get());
  32.       adjustHeap(var0, 0, var0.distance(var1) - 1, var3, var2);
  33.    }
  34.  
  35.    public static void makeHeap(BidirectionalIterator var0, BidirectionalIterator var1) {
  36.       makeHeap(var0, var1, new HashComparator());
  37.    }
  38.  
  39.    public static void makeHeap(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
  40.       int var3 = var0.distance(var1);
  41.       if (var3 >= 2) {
  42.          int var4 = (var3 - 2) / 2;
  43.  
  44.          while(true) {
  45.             adjustHeap(var0, var4, var3, var0.get(var4), var2);
  46.             if (var4 == 0) {
  47.                return;
  48.             }
  49.  
  50.             --var4;
  51.          }
  52.       }
  53.    }
  54.  
  55.    public static void sortHeap(BidirectionalIterator var0, BidirectionalIterator var1) {
  56.       sortHeap(var0, var1, new HashComparator());
  57.    }
  58.  
  59.    public static void sortHeap(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
  60.       BidirectionalIterator var3 = (BidirectionalIterator)var1.clone();
  61.  
  62.       while(var0.distance(var3) > 1) {
  63.          popHeap(var0, var3, var2);
  64.          var3.retreat();
  65.       }
  66.  
  67.    }
  68.  
  69.    static void adjustHeap(BidirectionalIterator var0, int var1, int var2, Object var3, BinaryPredicate var4) {
  70.       int var5 = var1;
  71.  
  72.       int var6;
  73.       for(var6 = 2 * (var1 + 1); var6 < var2; var6 = 2 * (var6 + 1)) {
  74.          if (var4.execute(var0.get(var6), var0.get(var6 - 1))) {
  75.             --var6;
  76.          }
  77.  
  78.          var0.put(var1, var0.get(var6));
  79.          var1 = var6;
  80.       }
  81.  
  82.       if (var6 == var2) {
  83.          var0.put(var1, var0.get(var6 - 1));
  84.          var1 = var6 - 1;
  85.       }
  86.  
  87.       pushHeap(var0, var1, var5, var3, var4);
  88.    }
  89. }
  90.