diff --git a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java index bce050d..1c607e6 100644 --- a/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java +++ b/be-graphes-algos/src/main/java/org/insa/graphs/algorithm/utils/BinaryHeap.java @@ -137,16 +137,17 @@ public class BinaryHeap> implements PriorityQueue { @Override public void remove(E x) throws ElementNotFoundException { - // TODO optimize indexOf int index = array.indexOf(x); if (isEmpty() || index == -1 || index >= this.currentSize) { throw new ElementNotFoundException(x); } - // replace element with last element - arraySet(index, array.get(--this.currentSize)); + // replace element with the min + arraySet(index, this.findMin()); - percolateDown(index); + percolateUp(index); + + this.deleteMin(); } @Override