Bubblesort problem

    Bubblesort problem

    Hy


    Also Ich habe jetzt meine Speicherdatei zerlegt und wollte einen Bubblesort Algorythmus anwenden um die niedrigsten zu finden.
    Aber Ich bekomme immer eine Fehlermeldung das ,das Array Out of Range ist.
    Hier mein Code:

    GML-Quellcode

    1. for (i = 0;i < ds_list_size(file);i++)
    2. {
    3. day[i]= string_copy(name[i],10,string_length(name[i])-24);
    4. day[i]=real(day[i])
    5. if (day[i] > day[i+1])
    6. {
    7. temp = day[i];
    8. day[i]= day[i+1];
    9. day[i+1]= temp;
    10. }
    11. }


    Was mache Ich falsch
    Auf Anhieb seh ich zwei mögliche Fehlerquellen:
    1.: string_copy. Der Index string_length(name)-24 ist OOB, wenn der string nicht mindestens 25 zeichen lang ist.
    2.: day[i+1] knallt auf jeden
    Fall, sobald i=ds_list_size(file)-1 gilt. Dann ist der Index i+1 nämlich eins hinter dem Ende des Arrays.

    Grüße,
    ih3

    Edit: Meinte in Punkt 2 natürlich size-1, nicht size.
    @Irrenhaus3

    Thx für die Antwort

    Jedoch das mit dem string_copy funktioniert einwandfrei.
    Sorry komme nicht ganz mit .Was meinst du mit knallt auf jedem Fall?
    Ich könnte ja noch eine for Schleife darum machen die nur eins weiter ist.Also for ( j = 1;j < ds_list_size(file);j++)
    falls das das Problem mit dem i+1 löst.
    Ich könnte ja vielleicht eine statt dem kleiner zeichen ein == machen also i == ds_list_size(file).
    ZB: day[0] = 28 und die anderen auch(also fast alle,es gibt zwei mit einer 1)


    Sorry Ich setze mich zum ersten mal mit einem Sortierungsalgorythmus auseinander.
    Über Hilfe würde Ich mich sehr freuen.


    EDIT:
    das ist die fehlermeldung
    Push :: Execution Error - Variable Index [0,5] out of range [1,5] - -5.zahl(100000,5)

    aber wieso geht er beim array auf [1,5] ??? versteh ich nicht.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „acidrain833“ ()

    jetzt würde ich gerne wissen wie ich diesen grafisch veranschaulichen kann.
    könnte mir da jemand helfen?also das man zuerst alle zahlen sieht und wenn man enter drückt soll der
    algorythmus starten und man sieht wie alle zahlen vertauscht werden usw.

    kann mir da jemand helfen.und kann mir bitte jemand auch noch die anderen arten von sortierungsalgorythmen erkären.bitte
    Da müsstest du deinen Algorithmus so umschreiben, dass er nicht mehr alle Arbeit innerhalb einer for-Schleife erledigt, sondern ihn alle X frames einen einzelnen Schritt machen lassen - z.B. über ein Alarm-Event - und den Zähler, der in der for-Schleife benutzt wird, dann stattdessen in diesem Alarm Event hochzählen.

    Und was weitere Sortieralgorithmen angeht, hat die englische Wikipedia eine schöne Liste, in der die populärsten Sortierer aufgeführt sind. Die haben dann auch alle jeweils eigene Artikel, meistens mit Grafik und Pseudocode zum nachbauen. Viel Spaß beim Durchklicken, da kann man einfach schon wegen der schieren Masse an Algos seeehr viel Zeit mit verbringen. ^^