Einzelnen Beitrag anzeigen

Earendil

Registriert seit: 10. Nov 2002
Ort: Konz
1 Beiträge
 
Delphi 5 Enterprise
 
#1

Direktes Sortieren mit Straightinsertion

  Alt 10. Nov 2002, 15:40
Hallo, erstmal sei gesagt dass ich nicht viel Ahnung von Delphi also verflucht mich nicht wenn ich irgendwelchen Unsinn schreibe.

Ich soll mit straightinsertion ein programm schreiben dass ein element sofort wenn ich es hinzufüge in eine liste einordnet. irgendwie soll ich das ganze auch noch mit zeigern machen. also wie ich das mit den zeigern machen soll hab ich so oder so keinen plan von, ich weiß nicht mal wie ich ne zahl direkt einordnen soll. ich bin bisher soweit ein programm zu haben das 10 zahlen die ich per edits einlese per insertion sort sortiert (die schritte lass ich über ein stringgrid ausgeben).

nun: wie kann ich jetzt ein element in die liste einsortieren lassen OHNE diese komplett neu zu sortieren.

und hat jemand ne idee mit den zeigern?

Gruß
Uni

So sieht mein Programm bisher aus:
Code:
procedure TForm1.DoSort1Click(Sender: TObject);
 var
  i : integer; //Zähler
  max : integer; //Maximale Zahlenanzahl
  zs : real; //Zwischenspeicher für ne Zahl
  Feld : array [0..9] of real;
  j: integer;
  x, y : integer; //Zähler für GidAusgabe
begin
 y := 0;
 max := 9;
 for i := 0 to max do
     sorted.Items.Delete(0);
for i := 0 to change.RowCount do
     change.RowCount := change.RowCount - 1;
 for i := 0 to max do
     Feld[i] := StrToInt(unsorted.Items.Strings[i]);

 for x := 0 to 9 do
     change.Cells[x,y] := FloatToStr(Feld[x]);
 change.RowCount := change.RowCount+1;
 inc(y);

 for i := 1 to max do
     begin
       zs := Feld[i];
       j := i-1;
        while (zs < Feld[j]) and (j >= 0) do
             begin
               Feld[j+1] := Feld[j];
               dec(j);

              for x := 0 to 9 do
                 change.Cells[x,y] := FloatToStr(Feld[x]);
              change.RowCount := change.RowCount+1;
              inc (y);

             end;
       Feld[j+1] := zs;
     end;
 for i := 0 to max do
     sorted.Items.Add(FloatToStr(Feld[i]));
 change.RowCount := change.RowCount - 1;
 counter.Text := inttostr(change.RowCount);
end;



procedure TForm1.Hinzufuegen1Click(Sender: TObject);
begin
unsorted.items.add(edit1.text);
unsorted.items.add(edit2.text);
unsorted.items.add(edit3.text);
unsorted.items.add(edit4.text);
unsorted.items.add(edit5.text);
unsorted.items.add(edit6.text);
unsorted.items.add(edit7.text);
unsorted.items.add(edit8.text);
unsorted.items.add(edit9.text);
unsorted.items.add(edit10.text);
end;
Bitte helft mir, ich habe wirklich keinen Plan!
  Mit Zitat antworten Zitat