Sortierverfahren Java Hamstersimulator

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

  • Sortierverfahren Java Hamstersimulator

    hallo ich raff bubblesort selectionsort und quicksort nicht- machen das im java hamstersimulator in der 12 am gymnasium :o
    das liegt hauptsächlich an meinen riesen defiziten, die ich momentan aufarbeite. jedoch geht es um zeit, da ich das abgeben muss über die ferien und kein defizit auf dem zeugnis haben will. daher wär ich euch sehr verbunden wenn ihr helfen TUT. gebe 10€ die stunde ;)


    Quellcode

    1. void main(){
    2. zahl();
    3. zahlErzeugen();
    4. sucheAb();
    5. bubbleSort();
    6. }//main()
    7. void zahl(){
    8. wert = new int[1000];
    9. }//zahl()
    10. void zahlErzeugen(){
    11. for (int x=0; x<1000; x++){
    12. wert[x] = Hilfe.zufall(0,100000);
    13. }// for
    14. }//zahlenErzeugen()
    15. public void bubbleSort(){
    16. for (int x=0; x<9999; x++){
    17. if(wert[x]<wert[x+1]){
    18. }// if
    19. }// for
    20. }//bubbleSort()
    Alles anzeigen


    wie geht das?! hilfe
  • Hey,

    ich habe den Bubblesort mal vor einiger Zeit nach gebaut.

    Diese Version arbeitet von "Links nach Rechts" und "Rechts nach Links". Das heißt es wird von beiden Seiten aus sortiert. Rein rechnerisch ist die benötigte Zeit zum Sortieren gleich. In der Realität ist diese Version aber ein bisschen schneller...

    Was "Hamster" angeht: Keine Ahnung was das sein soll... Das hier ist Nativer Java-Code...

    Quellcode

    1. public class Bubblesort {
    2. public static void main(String[] args) {
    3. int[] numbers = {5, 2, 3, 65, 4, 123};
    4. int done = 0;
    5. int toDo = numbers.length - 1;
    6. int temp;
    7. int notOK = 0;
    8. while (true) {
    9. notOK = 0;
    10. for(int i = done; i < toDo; i++) {
    11. if(numbers[i] > numbers[i+1]) {
    12. temp = numbers[i];
    13. numbers[i] = numbers[i+1];
    14. numbers[i+1] = temp;
    15. notOK++;
    16. }
    17. }
    18. toDo--;
    19. for(int i = toDo; i > done; i--) {
    20. if(numbers[i] < numbers[i-1]) {
    21. temp = numbers[i];
    22. numbers[i] = numbers[i-1];
    23. numbers[i-1] = temp;
    24. notOK++;
    25. }
    26. }
    27. done++;
    28. if(notOK == 0) {
    29. break;
    30. }
    31. if (toDo == 2) {
    32. break;
    33. }
    34. }
    35. System.out.println("Fin!");
    36. for(int i = 0, x = numbers.length; i < x; i++) {
    37. System.out.println((i+1) + ". Nummer: " + numbers[i]);
    38. }
    39. }
    40. }
    Alles anzeigen

    Das hier ist jetzt nicht sooo schön Programmiert. Mir ging es aber nur um eine einfache Darstellung.

    Gruß,
    E
    My lovely mister singing club...
  • n0x-f0x schrieb:

    wenn ich das richtig verstanden habe (und davon gehe ich aus) kapiert der Threadsteller "nicht enmal" seinen code und du erwartest er checkt deinen?

    Hmm, gidf.de wenn du wissen willst was der hamstersimulator ist... Die code wird im hamstersimulator höchstwahrscheinlich nicht funktionieren...

    Mir hilft anderer Code immer. Ich erarbeite mir das dann indem ich ein wenig Spicke. Rein von der Schreibweise ist da nicht viel anders...

    Aber gut: Hier mal ein Erklärungsversuch mit Beispiel von ein paar Zahlen.


    Okay: Folgende Situation:
    Die Zahlen 10 8 6 2 1 4 3 9 7 5 sollen aufsteigend sortiert werden.

    Quellcode

    1. Der Ansatz mit der FOR-Schleife war schon korrekt.
    2. Hier der Programmablauf:
    3. WENN wert[x] GRÖSSER [wert[x+1] DANN WERTE TAUSCHEN
    4. int tmp = wert[x];
    5. wert[x] = wert[x+1];
    6. wert[x+1] = tmp
    7. um die Werte austauschen zu können musst du dir einen Zahl in einer zweiten Variable merken.
    8. Was passiert? Hier mit den ersten paar Zahlen ein Beispiel:
    9. IST 10 > 8
    10. int tmp = 10
    11. wert[x] = wert[x+1] (8)
    12. wert[x+1] = tmp (10)
    13. >> 8 10 6 2 1 4 3 9 7 5
    14. IST 10 > 6
    15. int tmp = 10
    16. wert[x] = wert[x+1] (6)
    17. wert[x+1] = tmp (10)
    18. >> 8 6 10 2 1 4 3 9 7 5
    19. Und so geht das weiter. Wenn die FOR-Schleife durchgelaufen ist würde das ganze so aussehen:
    20. >> 8 6 2 1 4 3 9 7 5 10
    21. Um jetzt weiter zu sortieren muss die FOR-Schleife erneut gestartet werden und dann geht es wieder los mit:
    22. IST 8 > 6
    23. int tmp = 8
    24. wert[x] = wert[x+1] (6)
    25. wert[+1] = tmp
    26. Wenn z.B. so ein Fall eintritt
    27. IST 3 > 6
    28. wird gar nichts gemacht. Dadurch wandert die kleinste Zahl automatisch an die erste Stelle. Die größte Zahl wandert an die letzte Stelle.
    Alles anzeigen


    Ich hoffe es ist nicht zu unübersichtlich...


    BTW:
    @n0x-f0x: Ich bin kein Freund von Posts in denen lediglich gidf.de angeführt wird. Ausgenommen es bietet sich wirklich an weil massive Layer 8 Probleme vorliegen.
    Im Kontext war hier aber eher die Rede von: Ich hab eine Lösung in Java. Eventuell bringt dich das ja weiter.
    Du kannst die Lösung ja gerne erarbeiten... Da der Schüler aber Defizite hat währe es nicht hilfreich im die Lösung zu geben um sein Defizit so nur zu vergrößern. Zeugnisse sind schließlich dazu da, zu zeigen wer gut und wer nicht so gut ist und wo stärken sind (zumindest sollten Zeugnisse dazu da sein).

    Gruß,
    E
    My lovely mister singing club...