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 cd77e5c..bce050d 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,17 +137,16 @@ public class BinaryHeap> implements PriorityQueue { @Override public void remove(E x) throws ElementNotFoundException { - // TODO: - if (isEmpty() || !array.contains(x)) { + // TODO optimize indexOf + int index = array.indexOf(x); + if (isEmpty() || index == -1 || index >= this.currentSize) { throw new ElementNotFoundException(x); } - int indice_suppression = array.indexOf(x); - arraySet(indice_suppression, array.get(this.currentSize - 1)); - //array.remove(this.currentSize); - this.currentSize--; - if (indice_suppression < this.currentSize) { - percolateDown(indice_suppression); - } + + // replace element with last element + arraySet(index, array.get(--this.currentSize)); + + percolateDown(index); } @Override