Advertisement
Guest User

Untitled

a guest
Dec 22nd, 2014
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.12 KB | None | 0 0
  1. package cz.cvut.fel.pr1;
  2.  
  3. import cz.cvut.fel.pr1.provided.BinaryHeap;
  4. import cz.cvut.fel.pr1.provided.Comparator;
  5. import cz.cvut.fel.pr1.provided.PriorityQueue;
  6. import cz.cvut.fel.pr1.provided.Task;
  7.  
  8. public class HeapQueue implements PriorityQueue, BinaryHeap {
  9.  
  10.     int levl = 5;
  11.     Task[] array = new Task[2 ^ levl - 1];
  12.     int size = 0;
  13.     boolean end = false;
  14.     int head = 1;
  15.     Comparator comparator;
  16.  
  17.     @Override
  18.     public Comparator getComparator() {
  19.         return comparator;
  20.     }
  21.  
  22.     @Override
  23.     public void setComparator(Comparator comparator) {
  24.         this.comparator = comparator;
  25.     }
  26.  
  27.     @Override
  28.     public void offer(Task task) {
  29.         size++;
  30.         int halp = size;
  31.         while (halp > 1 && comparator.compare(task, array[halp / 2]) > 0) {
  32.             array[halp] = array[halp / 2];
  33.             halp /= 2;
  34.         }  
  35.         array[halp] = task;
  36.     }
  37.  
  38.     @Override
  39.     public Task peek() {
  40.         return array[head];
  41.     }
  42.  
  43.     @Override
  44.     public Task poll() {
  45.         if (size == 0) {
  46.             return null;
  47.         } else {
  48.  
  49.             Task taskToPoll = array[head];
  50.             array[head] = null;
  51.             repairTop();
  52.             size--;
  53.             return taskToPoll;
  54.  
  55.         }
  56.     }
  57.  
  58.     public void repairTop() {
  59.         int halp = head + 1;
  60.         Task tmp;
  61.         while (!end){
  62.             if (comparator.compare(array[halp], array[halp + 1]) > 0) {
  63.                     tmp = array[halp + 1];
  64.                     array[halp + 1] = array[halp];
  65.                     array[halp] = tmp;
  66.                     halp++;
  67.                 } else {
  68.                     end = true;
  69.                 }
  70.         }
  71.     }
  72.  
  73. @Override
  74.         public Task getLeftChild(Task task) {
  75.         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  76.     }
  77.  
  78.     @Override
  79.         public Task getRightChild(Task task) {
  80.         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  81.     }
  82.  
  83. //implementace
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement