Advertisement
Guest User

Untitled

a guest
Dec 18th, 2013
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.15 KB | None | 0 0
  1. public class Heap {
  2.    
  3.     private static void pushDown(int h[], int pos, int n) {
  4.         while (2 * pos + 1 < n) {
  5.             int j = 2 * pos + 1;
  6.             if (j + 1 < n && h[j + 1] > h[j])
  7.                 j++;
  8.             if (h[pos] >= h[j])
  9.                 break;
  10.             int t = h[pos];
  11.             h[pos] = h[j];
  12.             h[j] = t;
  13.             pos = j;
  14.         }
  15.     }
  16.  
  17.     public static void main(String[] args) {
  18.         long start = System.currentTimeMillis();
  19.        
  20.         final int N = 10000000;
  21.         int h[] = new int[N];
  22.        
  23.         for (int i = 0; i < N; i++) {
  24.             h[i] = i;
  25.         }
  26.  
  27.         for (int i = N / 2; i >= 0; i--)
  28.             pushDown(h, i, N);
  29.        
  30.         int n = N;
  31.         while (n > 1) {
  32.             int t = h[0];
  33.             h[0] = h[n - 1];
  34.             h[n - 1] = t;
  35.             n--;
  36.             pushDown(h, 0, n);
  37.         }
  38.  
  39.         for (int i = 0; i < N; i++) {
  40.             if (h[i] != i) {
  41.                 throw new RuntimeException("h[i] != i");
  42.             }
  43.         }
  44.  
  45.         System.out.println("Done in " + (System.currentTimeMillis() - start));
  46.     }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement