binary heap remove
This commit is contained in:
parent
30bf791092
commit
d9e7c9df3b
1 changed files with 25 additions and 0 deletions
|
@ -138,6 +138,31 @@ public class BinaryHeap<E extends Comparable<E>> implements PriorityQueue<E> {
|
||||||
@Override
|
@Override
|
||||||
public void remove(E x) throws ElementNotFoundException {
|
public void remove(E x) throws ElementNotFoundException {
|
||||||
// TODO:
|
// 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
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue