Mergesort

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hi Leute,

    ich interessiere mich in letzter zeit sehr viel für Informatik. Ich
    programmiere oft mit bluej damit ich immer besser werde. Nun habe ich
    versucht einige sortierverfahren zu erlernen. Daher habe ich es
    erstmals mit mergesort versucht. Nun komm ich einfach nicht weiter. Ich
    finde meine Fehler bei meiner Programmierung nicht. Deshalb hab ich
    mich in diesen Forum angemeldet um endlich hilfe zu bekommen. Ich hoffe
    ihr könnt meine Fehler finden.

    MfG

    Quellcode

    1. import java.util.Random;
    2. public class a1
    3. {
    4. private int[] zufälligeZahlen;
    5. int[] hundertZahlen = new int[100];
    6. public void zahlenErzeugen()
    7. {
    8. Random zufall = new Random();
    9. for (int i=0; i<100; i++)
    10. hundertZahlen[i] = zufall.nextInt(100);
    11. }
    12. public void ausgeben()
    13. {
    14. for (int k=0; k<100; k++)
    15. System.out.println(hundertZahlen[k]);
    16. }
    17. public void mergeSort() {
    18. int laenge = hundertZahlen.length;
    19. int speicher; int mitte = 0; int i = 0; int j = 0; int k = 0;
    20. mitte = hundertZahlen.length/2;
    21. int[] liste1 = new int[mitte];
    22. int[] liste2 = new int[mitte];
    23. int[] sortieren = new int[laenge-1 ];
    24. //erster Teil
    25. while(i < mitte) {
    26. liste1[i] = hundertZahlen[i];
    27. i++;
    28. }
    29. //zweiter Teil
    30. i = mitte; j = 0;
    31. while(i < (laenge)) {
    32. liste2[j] = hundertZahlen[i];
    33. i++;
    34. j++;
    35. }
    36. System.out.println("Liste1: "+ liste1);
    37. System.out.println("Liste2: "+ liste2);
    38. i = 0; j = 0;
    39. while(i < mitte) {
    40. if(liste1[i] < liste2[j]) {
    41. sortieren[k] = liste1[i];
    42. i++;
    43. }
    44. else if(liste1[i] > liste2[j]) {
    45. sortieren[k] = liste2[j];
    46. j++;
    47. }
    48. k++;
    49. }
    50. System.out.println("Sortiert: "+ sortieren);
    51. }
    52. }
    Alles anzeigen
  • Hi,

    welche(n) Fehler erhälst du denn? Meinst du einen logischen Fehler?
    Ich weiß nicht ob die Formatierung deines Codes durch copy und paste so mieserabel geworden ist, aber es ist sehr schwer dir so zu helfen. Überblick gleich 0!

    Zum testen solltest du auch nicht so viele Zahlen benutzen. Geh mal beim erzeugen der Zahlen zum testen von 100 auf 10.


    Zu deinen Klassenvariablen. Umlauten müssten funktionieren, es sollte aber unstrittig sein, das das ein NoGo ist. Du nutzt diese auch garnicht?!
    Oben definierst du noch die Klassenvariable hundertZahlen, im Code sprichst du diese aber nicht an. Du musst dies mittels this tun, also this.hundertZahlen.

    Wenn du bei der Ausgabe was sehen möchtest, solltest du auch nicht einfach das Listenobjekt ausgeben sondern z.B die toString Methode nutzen.