home *** CD-ROM | disk | FTP | other *** search
- package COM.objectspace.jgl;
-
- public class Heap {
- private Heap() {
- }
-
- public static void pushHeap(BidirectionalIterator var0, BidirectionalIterator var1) {
- HashComparator var2 = new HashComparator();
- pushHeap(var0, var0.distance(var1) - 1, 0, var1.get(-1), var2);
- }
-
- public static void pushHeap(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
- pushHeap(var0, var0.distance(var1) - 1, 0, var1.get(-1), var2);
- }
-
- static void pushHeap(BidirectionalIterator var0, int var1, int var2, Object var3, BinaryPredicate var4) {
- for(int var5 = (var1 - 1) / 2; var1 > var2 && var4.execute(var0.get(var5), var3); var5 = (var5 - 1) / 2) {
- var0.put(var1, var0.get(var5));
- var1 = var5;
- }
-
- var0.put(var1, var3);
- }
-
- public static void popHeap(BidirectionalIterator var0, BidirectionalIterator var1) {
- popHeap(var0, var1, new HashComparator());
- }
-
- public static void popHeap(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
- Object var3 = var1.get(-1);
- var1.put(-1, var0.get());
- adjustHeap(var0, 0, var0.distance(var1) - 1, var3, var2);
- }
-
- public static void makeHeap(BidirectionalIterator var0, BidirectionalIterator var1) {
- makeHeap(var0, var1, new HashComparator());
- }
-
- public static void makeHeap(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
- int var3 = var0.distance(var1);
- if (var3 >= 2) {
- int var4 = (var3 - 2) / 2;
-
- while(true) {
- adjustHeap(var0, var4, var3, var0.get(var4), var2);
- if (var4 == 0) {
- return;
- }
-
- --var4;
- }
- }
- }
-
- public static void sortHeap(BidirectionalIterator var0, BidirectionalIterator var1) {
- sortHeap(var0, var1, new HashComparator());
- }
-
- public static void sortHeap(BidirectionalIterator var0, BidirectionalIterator var1, BinaryPredicate var2) {
- BidirectionalIterator var3 = (BidirectionalIterator)var1.clone();
-
- while(var0.distance(var3) > 1) {
- popHeap(var0, var3, var2);
- var3.retreat();
- }
-
- }
-
- static void adjustHeap(BidirectionalIterator var0, int var1, int var2, Object var3, BinaryPredicate var4) {
- int var5 = var1;
-
- int var6;
- for(var6 = 2 * (var1 + 1); var6 < var2; var6 = 2 * (var6 + 1)) {
- if (var4.execute(var0.get(var6), var0.get(var6 - 1))) {
- --var6;
- }
-
- var0.put(var1, var0.get(var6));
- var1 = var6;
- }
-
- if (var6 == var2) {
- var0.put(var1, var0.get(var6 - 1));
- var1 = var6 - 1;
- }
-
- pushHeap(var0, var1, var5, var3, var4);
- }
- }
-