diff --git a/src/main/java/ch/hepia/structure/BinaryHeap.java b/src/main/java/ch/hepia/structure/BinaryHeap.java index 146cc15f4a05c0d78556abb1e58e2ff3955286b6..131ae468e325cfe5e32da7517816085f7154a43d 100644 --- a/src/main/java/ch/hepia/structure/BinaryHeap.java +++ b/src/main/java/ch/hepia/structure/BinaryHeap.java @@ -1,11 +1,15 @@ +java.lang.Math +java.util.Random + public class BinaryHeap{ - private int[] heap; + //private int[] heap; - public BinaryHeap(){ - this.heap = new int[10]; - } + public BinaryHeap(int size){ + //this.heap = new int[10]; + heap = int[size]; + } - public BinaryHeap(int[] values){ + /*public BinaryHeap(int[] values){ int[] newHeap = new int[values.length]; for (int value : values){ for (int i = 0; i < newHeap.length; i++){ @@ -14,10 +18,61 @@ public class BinaryHeap{ System.out.println(newHeap[1]); } this.heap = newHeap; + }*/ + + public static populate(int nbValues){ + System.out.println("gfgdg"); + for (int i = 0; i < nbValues; i++) { + randomVal = Math.random(); + //System.out.println(randomVal); + this.heap[i] = randomVal; + } + //return heap; + } + + private static void Echange(ref int a, ref int b){ + int swap = a; + a = b; + b = swap; + } + + + private static void Tamiser(int[] arbre, int noeud, int n){ + int k = noeud; + int j = 2 * k; + + while (j <= n) + { + if ((j < n) && (arbre[j] < arbre[j + 1])) + j++; + + if (arbre[k] < arbre[j]) + { + Tri.Echange(ref arbre[k], ref arbre[j]); + k = j; + j = 2 * k; + } + else + break; + } + } + + public static void TriParTas(BinaryHeap arbre){ + for (int i = arbre.Length >> 1; i >= 0; i--) + Tri.Tamiser(arbre, i, arbre.Length - 1); + + for (int i = arbre.Length - 1; i >= 1; i--) + { + Tri.Echange(ref arbre[i], ref arbre[0]); + Tri.Tamiser(arbre, 0, i - 1); + } } public static void main(String[] args){ - BinaryHeap test = new BinaryHeap(new int[]{10,2}); + BinaryHeap test = new BinaryHeap(); + test.populate(5); + //System.out.println(Arrays.toString(test)); + System.out.println("aaa"); } } \ No newline at end of file