From d9e7c9df3b432d6af0dd6153adb8fa93d90a1fa1 Mon Sep 17 00:00:00 2001 From: georgia Date: Wed, 29 Mar 2023 18:26:27 +0200 Subject: [PATCH] binary heap remove --- .../graphs/algorithm/utils/BinaryHeap.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) 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 2c1a239..994610c 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 @@ -138,6 +138,31 @@ public class BinaryHeap> implements PriorityQueue { @Override public void remove(E x) throws ElementNotFoundException { // TODO: + int k=0; + int index =-1; //on cherche l'indice de x si il est dans le cas et sinon on rentre dans l'exception + + for (E element:array){ + if (k==currentSize){ + break; + } + if (element.equals(x)){ + index=k; + } + k+=1; + } + if (index==-1){ //x n'est pas dans le tas + throw new ElementNotFoundException(x); + } + + E last=this.array.get(currentSize-1); //dernier élement du tas + this.array.set(index, last); + + currentSize=currentSize-1; //on enlève le dernier élement (qui était dans le tas) du tas + percolateDown(index); + percolateUp(index); + + + } @Override