Insertionsort

    Insertionsort

    Hallo alle zusammen,
    ich habe folgendes Problem: morgen muss ich mein Projekt zu Ende bringen und abgeben, das Projekt beinhaltet verschiedene Sortierverfahren undzwar Bubblesort, Insertionsort, Selectionsort und Quicksort. Ich hatte bei 3 von diesen 4 kein Problem, allerdings komme ich beim insertionsort einfach nicht weiter und verzweifle schon langsam dran, wieso er verdammt nochmal nicht sortieren will. Könnte mir einer von euch vielleicht helfen und mir den Fehler nennen, alleine werde ich nicht mehr darauf kommen denke ich.
    Danke schonmal im Voraus :)


    Delphi-Code

    1. Procedure tform2.insert(liste:tlistbox);
    2. var i,j,x : Integer;
    3. begin
    4. for i:= 0 to (liste.items.count - 1) do
    5. begin
    6. x:=StrToInt(liste.items[i]);
    7. j:= i;
    8. while
    9. (j > i) and (StrToInt(liste.items[j - 1]) < x) do
    10. begin
    11. liste.items[i]:=liste.items[j - 1];
    12. dec( j );
    13. end;
    14. Liste.items[j]:=IntToStr(x);
    15. end;
    16. end;

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

    Hallo und herzlich Willkommen ;)

    Ohne mir das genauer anzuschauen, würde ich behaupten Du hast nicht richtig abgeschrieben, oder?

    Quellcode

    1. public static int[] insertionSort(int[] sortieren) {
    2. int temp;
    3. for (int i = 1; i < sortieren.length; i++) {
    4. temp = sortieren[i];
    5. int j = i;
    6. while (j > 0 && sortieren[j - 1] > temp) {
    7. sortieren[j] = sortieren[j - 1];
    8. j--;
    9. }
    10. sortieren[j] = temp;
    11. }
    12. return sortieren;
    13. }


    Hinweis: Zeile 4 und Zeile 6
    Hi danyy95

    Schau dir das mal an.

    Delphi-Code

    1. Procedure tform2.insert(liste:tlistbox);
    2. var i,j,x : Integer;
    3. begin
    4. for i:= 0 to (liste.items.count - 1) do
    5. begin
    6. x:=StrToInt(liste.items); //Sollte 'StrToInt(liste.items[[b]i[/b]]);' heissen
    7. j:= i;
    8. while (j > i) and (StrToInt(liste.items[j - 1]) < x) do
    9. begin
    10. liste.items[i]:=liste.items[j - 1];
    11. dec( j );
    12. end;
    13. Liste.items[j]:=IntToStr(x);
    14. end;
    15. end;


    Ohne mir den Algo genauer angesehen zu haben: Mit 'x' willst du ja den aktuellen Itemindex zwischenspeichern (
    Liste.items[index].
    Du übergibst an x aber die kompletten Items an X - was Delphi da übergibt, dürfte wohl der ASCI-Wert für jedes einzelne Zeichen sein. Du eerhälst also eigentlich eine gewaltig grosse Zahl, die niemals kleiner als der Index oder der Hilfsindex ist.

    Ein kleiner Tip: die obige Prozedur wurde im Delphi-Editor formatiert, da kopiert und hier eingefügt, anschliessend komplett markiert. Korrekt formatiert wird sie schlussendlich durch drücken des 'Helm-Buttons der zweiten Buttonreihe (ganz rechts).


    Gruss
    Delbor
    roase.ch/

    Was wirklich zählt, ist Intuition. Albert Einstein

    ________________

    Delbor alias Zoran

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