Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe ein Sortierverfahren implementiert. Die Binäre Suche. Es wird ein Array mit Zahlen übergeben sowie das zu suchende Element. Die Funktion liefert mir das Feld zurück in dem sich das Element befindet, oder eine Rückmeldung dass sich das Element nicht im Array befindet.
Jetzt würde ich das gerne mit einen Junit-Test testen. Ich habe aber keine Idee wie ich das realisieren kann. Ich müsste doch im Testfall etwas richtiges zur Verfügung stellen, und das dann mit meinem Output vergleichen. Ich habe aber keine Idee mit was ich meinen Output vergleichen kann.
Ich hoffe jemand kann mir da einen Denkansatz geben.
Das Problem ist, dass das Array mit den Daten sehr groß ist, und mit random integer Zahlen gefüllt ist. Wenn ich im Testfall eine Kopie von dem Input-Array erstelle, dann müsste ich doch auch das gesuchte Element angeben und genau wissen in welchem Feld sich dieses befindet. Das vergleiche ich dann mit dem Output meiner Methode.
Aber wie kann ich dann das gesuchte Element definieren, und wie finde ich heraus wo sich dieses befindet. Das Array ist zwar sortiert, aber anhand von den random zahlen kann ich nichts damit anfangen. Array ist 100 tausend zahlen lang.
habe hier male einen Testfall. Mich würde interessieren ob dieser richtig implementiert wurde. Habe alles kommentiert.
Meine Funktion funktioniert zu 100%. Aber beim Testfall bekomme ich einen Error. Ich hoffe ihr könnt mir helfen.
Java:
public class search {
@Test
public void test() {
SearchAlgos tools = new SearchAlgosImpl();
int[] data = Helper.getData(1000); // array mit 1000 zufallszahlen
int[] data2 = Arrays.copyOf(data, data.length); // kopie vom array data
Arrays.sort(data2); //die kopie wird sortiert
int x = data[100]; // x ist das Element an der Position 100
int s = 100; // position 100 wird später verglichen
int z = tools.BinarySearch(data, x); // array wird der funktion übergeben mit dem wert an der position 100 (x)
Assert.assertTrue(s == z); // funktion sollte mir das Feld als int parameter liefern wo sich das Element x aufhält.
}
}
Sry, das habe ich vergessen zu schreiben. Das Array welches ich übergebe, wird in der Binärsuche-Funktion vorher sortiert. Somit sind beide Arrays sortiert. Der Error tritt td auf.
Erstmal sollte eben sowas nicht passieren. Das suchen und das sortieren sollten getrennt passieren, da du nicht jedes mal erst die Elemente sortieren willst!
Dennoch bleibt meine Aussage bestehen:
Arrays.sort(data2);
int x = data[100];
int s = 100;
data ist unsortiert. Und das 100ste Element ist sicherlich nicht das selbe, wie in dem sortierten Array.