Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package cz.cvut.fel.pr1;
- import cz.cvut.fel.pr1.provided.BinaryHeap;
- import cz.cvut.fel.pr1.provided.Comparator;
- import cz.cvut.fel.pr1.provided.PriorityQueue;
- import cz.cvut.fel.pr1.provided.Task;
- public class HeapQueue implements PriorityQueue, BinaryHeap {
- int levl = 5;
- Task[] array = new Task[2 ^ levl - 1];
- int size = 0;
- boolean end = false;
- int head = 1;
- Comparator comparator;
- @Override
- public Comparator getComparator() {
- return comparator;
- }
- @Override
- public void setComparator(Comparator comparator) {
- this.comparator = comparator;
- }
- @Override
- public void offer(Task task) {
- size++;
- int halp = size;
- while (halp > 1 && comparator.compare(task, array[halp / 2]) > 0) {
- array[halp] = array[halp / 2];
- halp /= 2;
- }
- array[halp] = task;
- }
- @Override
- public Task peek() {
- return array[head];
- }
- @Override
- public Task poll() {
- if (size == 0) {
- return null;
- } else {
- Task taskToPoll = array[head];
- array[head] = null;
- repairTop();
- size--;
- return taskToPoll;
- }
- }
- public void repairTop() {
- int halp = head + 1;
- Task tmp;
- while (!end){
- if (comparator.compare(array[halp], array[halp + 1]) > 0) {
- tmp = array[halp + 1];
- array[halp + 1] = array[halp];
- array[halp] = tmp;
- halp++;
- } else {
- end = true;
- }
- }
- }
- @Override
- public Task getLeftChild(Task task) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
- @Override
- public Task getRightChild(Task task) {
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
- }
- //implementace
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement