![]() |
Delphi-Version: 5
Sortieren mit direktem Auswahlort
Hi Leute,
ich muss in der Schule die Arbeitsweise des Sortierverfahrens mit direktem Auswahlort erklären. Das Prinzip habe ich schon verstanden. Mein Problem ist, dass ich nicht weiß, wie man dies in Delphi/Lazarus durchführt. Ich würde denken, dies macht man mit zwei Array´s, ein unsortiertes und ein sortiertes.:? Aber wie sucht man denn die kleinste Zahl im unsortierten Feld heraus??? Außerdem will ich die Zahlen alle über ein Edit-Feld erstmal einlesen (einzeln). Geht das irgendwie??? Ich wäre euch echt dankbar für jede Hilfe. LG. |
AW: Sortieren mit direktem Auswahlort
Array oder Liste ... ist am Ende in etwa das Gleiche ... was man halt lieber hat.
Zitat:
|
AW: Sortieren mit direktem Auswahlort
ja genau.
jeder wert soll einzeln eingelesen werden und dann angehängt. Aber dafür muss ja mit jedem betätigen des Buttons das Array um eins vergrößert und dann noch die zahl hinzugefügt werden. Und an dieser Stelle komme ich nicht weiter. Und dann sollen die zahlen noch sortiert werden... |
AW: Sortieren mit direktem Auswahlort
Probiers mal damit:
Delphi-Quellcode:
procedure auswahlsort (var a: array of Word);
var bis,i,j,k : LongInt; h : Word; begin bis := High(a); for i := 0 to bis - 1 do begin h := a[i]; k := i; for j := i + 1 to bis do if a[j] < h then begin h := a[j]; k := j end; a[k] := a[i]; a[i] := h end end; |
AW: Sortieren mit direktem Auswahlort
...oder das...
Trifft es vielleicht noch eher...
Delphi-Quellcode:
procedure austauschsort (var a: array of Word);
var bis,i,j : LongInt; h : Word; begin bis := High(a); for i := 0 to bis - 1 do for j := i + 1 to bis do If a[i] > a[j] then begin h := a[i]; a[i] := a[j]; a[j] := h end end; |
AW: Sortieren mit direktem Auswahlort
Liste der Anhänge anzeigen (Anzahl: 1)
Letzteres entspricht dem folgenden Schema:
|
AW: Sortieren mit direktem Auswahlort
Zitat:
Zitat:
Delphi-Quellcode:
var
myList : TList<integer>; myArray : Array of Integer; begin myList := TList<integer>.Create; setLength(myArray,0); // Anfügen eines Wertes // 1. An eine TList<int> myList.Add(Value); // 2. An ein Array SetLength(myArray, Length(myArray) + 1); myArray [Length(myArray)] := Value; |
AW: Sortieren mit direktem Auswahlort
Morgens!
Zitat:
Die Aufgabenstellung umfasst doch die Frage nach einem bestimmten Algorithmus: Sortieren mit direktem Auswahlort sprich: Sortierung durch direkte Auswahl... Meine Programmbeispiele beantworten die Frage nach dem gesuchten Algorithmus definitiv... Ein anderes Programmbeispiel mit umfassender Beschreibung findet man (sogar in Delphi geschrieben) unter Wikipedia. :wink: Dazu muss man dann noch EINE seiner Fragen berücksichtigen: Zitat:
Naja, ich gebe zu, nicht all seine Fragen werden von mir beantwortet... Aber ich glaube darum sollte es hier auch gar nicht gehen. Ich denke, an dieser Stelle müsste der junge Padawan noch mal zum Zuge kommen und vielleicht erklären, was genau die Aufgabenstellung an IHN ist. Mir stellt sich nämlich die Frage, ob es eine genaue Definition zur Lösung einer gestellten Aufgabe gibt, oder ob er vielleicht nur das gesucht Sortierverfahren, bzw. den Algorithmus, in Delphi umzusetzen hat und es ihm dabei frei gestellt ist, wie er ein veranschaulichendes Programm schreibt; nämlich mit dem benannten Button (auf den bisher noch keiner von uns genauer eingegangen ist) und einem dynamischen Array. Es stellt sich nämlich hieraus unweigerlich die Frage, wird von einer statischen Werte-Menge wie z.B. Lottozahlen ausgegangen oder eine variable Werte-Menge wie z.B. aus sich veränderten Messergebnissen...? Also: Ein Appell an den Verfasser dieses Themas: Schreib doch mal wieder. :-D |
AW: Sortieren mit direktem Auswahlort
Zitat:
Stell Dir vor, jemand will von Hamburg nach Berlin mit dem Auto, und zwar in die Skeuderitzer Str. 28. Er fragt, wo der Rückwärtsgang ist, weil er ausparken muss und Du gibst im Tipps, wie man in die Skeuderizter Str. einbiegt (weil da ne Baustelle ist). Klar, ohne deinen Tipp kommt er nicht an, aber er muss doch erst mal losfahren :lol: Komm schon, die Sonne scheint (jedenfalls hier) Grüße :-D |
AW: Sortieren mit direktem Auswahlort
Naja, wenn der Autofahrer nicht mal weiß, wo der Rückwärtsgang ist, sollte er sich vielleicht mit einem öffentlichen Verkehrsmittel anfreunden. Vielleicht hat er ja noch gar keinen Führerschein. Mit Bus oder Bahn käme er aber wahrscheinlich schon mal ans Ziel.
*grins* Ich habe so das Gefühl, als wenn der junge Verfasser dieses Themas auch noch keine Plan hat, wo er die Gänge findet. Aber wir können ihm ja Stück für Stück weiter helfen. 8-) Dabei ist es dann auch sehr schön, wenn jemand noch was zu schmunzeln hat. :thumb: |
AW: Sortieren mit direktem Auswahlort
Erstmal möchte ich mich für die Antworten bedanken.
Trotzdem habe ich noch ein paar Fragen: 1. Um die Zahlen in das Array (sort) einzufügen habe ich das so gemacht:
Delphi-Quellcode:
zahl:= strtoint(edteingabe.caption);
for a:= min + 1 to bis do begin sort[a]:= zahl; end;
Delphi-Quellcode:
Frage: Funktioniert das so?
bis := High(sort);
min := low (sort); 2. Um die Zahlen zu sortieren:
Delphi-Quellcode:
bis dahin bin ich gekommen(vgl.
For i:= 1 to N-1 Do
Begin min:= i; For j:= i+1 To N Do If (sort[j] < sort[min]) Then min:= j; ![]() Dort steht nun aber die Werte i und min müssen getauscht werden (Dreieckstausch?). Aber wieso und wie sieht das dann aus? Und wie kann man dann das sortierte Array auf ein Label ausgeben??? Ich bedanke mich schonmal für alle Antworten. |
AW: Sortieren mit direktem Auswahlort
Also:
Zitat:
Sei mal so nett und poste ihn mal vollständiger... Im ersten Moment sieht es nämlich so aus, als würde dein Array nach dem Buttonclick immer mit dem jeweiligen Caption Wert gefüllt werden können: d.H. die Felder des Arrays hätten dann alle den selben Wert, wie er nach dem letzten Buttonclick übergeben würde... Zitat:
Zitat:
Delphi-Quellcode:
Label1.Caption := '';
For I := 0 To Length(Array)-1 do begin Label1.Caption := Label1.Caption + IntToStr(Array[i]) + ' '; end; |
AW: Sortieren mit direktem Auswahlort
Also das mit dem sortieren klappt erstmal soweit. Denke ich. Siehe hier:
Delphi-Quellcode:
Aber das Einfügen geht wirklich nicht.
procedure TForm1.btnsortClick(Sender: TObject);
begin For i:= 1 to 10-1 Do Begin min:= i; For j:= i+1 To 10 Do If (sort[j] < sort[min]) Then begin h :=sort[j] ; sort[j] :=sort[min]; sort[min]:=h ; end; end; lblsort.caption := ''; For i := 0 To Length(sort) do begin lblsort.caption := lblsort.caption + IntToStr(sort[i]) + ' '; end; end; Hier mal alles von Implementation an:
Delphi-Quellcode:
implementation
{$R *.lfm} { TForm1 } var sort : array[1..10]of integer; zahl, bis, i, a, j, h, min : integer ; procedure TForm1.FormCreate(Sender: TObject); begin bis := High(sort); min := low (sort); end; procedure TForm1.btnhinzuClick(Sender: TObject); begin zahl:= strtoint(edteingabe.caption); for a:= min + 1 to bis do begin sort[a]:= zahl; end; lblunsort.caption := inttostr(sort[1]) + ' hinzugefügt'; end; Zitat:
Ich weiß, das kann eigentlich nicht so schwer sein. Aber ich kenne mich damit nicht aus... |
AW: Sortieren mit direktem Auswahlort
Zitat:
Auf jeden Fall macht es das schon insgesamt einfacher. Du musst jetzt nur systematisch vorgehen: 1) Der erste Wert soll nach dem Button-Click an deine Array übergeben werden, natürlich dann auch gleich einsortiert werden. Das Problem ist, dass, wenn du z.B. drei Mal per Button-Click jeweils unterschiedliche Werte an deine Array übergibst, bekommst du folgendes Ergebnis (Allerdings nicht mit deiner Routine...): 0 0 0 0 0 0 0 14 47 81 Liegt da dran, dass du ja immer noch 7 unbelegte Werte im Array hast. 2) Voraussetzung dafür, dass du überhaupt einen Wert per Button-Click an dein Array gesichert übergeben kannst ist: a) verhindern, dass du über 10 Werte hinausschießt b) dass du mithilfe eines für a) notwendigen Zählers ERST alle Werte mit jedem Button-Click an dein Array übergibst und danach oder zwischendurch per zweiten Schalter dein Array sortierst und dann zur Ausgabe an ein Label übergibst. Sollten dich dann möglicherweise die '0'-Werte bei der Ausgabe stören, kannst du diese ja herausfiltern (alles außer 0 darf dem Label angefügt werden)... 3) Vielleicht solltest du bei der Eingabemöglichkeit für einzelne Werte noch verhindern, dass im TEdit was anderes, außer Ganzahlen eingegeben werden kann, da dein Array ja OF INTEGER ist... |
AW: Sortieren mit direktem Auswahlort
Noch ein Nachtrag:
Wenn du z.B. drei Werte übergeben hast, dann mal 'kurz' sortierst fehlt dir plötzlich die Position, wo du weitere in dein Array füllen kannst, da dann deine Zählerposition hinfällig ist. Daher wäre es das Einfachste, erst alle Werte zu übergeben und danach zu sortieren. Alles Andere macht dein Projekt deutlich komplexer... außer du arbeitest tatsächlich mit einem ZWEITEN Array, dass dann nur ein sortiertes Ergebnis enthält... |
AW: Sortieren mit direktem Auswahlort
Ein dynamisches Array
Delphi-Quellcode:
fängt bei 0 an.
var Foo : array of integer;
Ein statisches Array
Delphi-Quellcode:
fängt bei der angegebenen unteren Grenze an (hier 42)!
var Foo : array[42..45] of integer
|
AW: Sortieren mit direktem Auswahlort
Zitat:
Aber dein Einwand ist sinnvoll und berechtigt. |
AW: Sortieren mit direktem Auswahlort
Zitat:
Delphi-Quellcode:
Das scheint jetzt zu funktionieren. Ausprobiert habe ich das, indem ich die Werte des Arrays erstmal im Quellcode definiert habe.
var sort : array[0..9]of integer;
procedure TForm1.btnsortClick(Sender: TObject); begin For i:= 0 to 9-1 Do Begin min:= i; For j:= i+1 To 9 Do If (sort[j] < sort[min]) Then begin h :=sort[j] ; sort[j] :=sort[min]; sort[min]:=h ; end; end; lblsort.caption := ''; For i := 0 To Length(sort) -1 do begin lblsort.caption := lblsort.caption + IntToStr(sort[i]) + ' '; end; end; Zitat:
Wenn man anstatt integer --> real nimmt ginge es ja auch mit dezimalzahlen? Trotzdem weiß ich nicht wie man die Werte übergibt. Nach jedem betätigen des Buttons würde dieser doch das gesammte Array überlaufen? |
AW: Sortieren mit direktem Auswahlort
Dann musst du dir halt merken wieweit das Array gefüllt ist. Dafür gibt es Variablen.
Daran kannst du auch festmachen, ob das Array komplett gefüllt ist (keine weitere Eingabe möglich, aber Sortieren jetzt möglich). Mit einem Reset-Button kannst du dann die Variable wieder zurücksetzen. |
AW: Sortieren mit direktem Auswahlort
Es macht überigens Sinn, für einzelne Teile separate Methoden zu erstellen:
Delphi-Quellcode:
procedure TForm1.SortArray;
begin // hier der Code zum Sortieren end; function TForm1.ArrayToString : string; begin // hier der Code um aus dem Array einen String zu machen Result := ... end; procedure TForm1.Button1Click( Sender : TObject ); begin SortArray; lblsort.Caption := ArrayToString; end; |
AW: Sortieren mit direktem Auswahlort
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Besser so, sonst schepperts.
Delphi-Quellcode:
@rebellxsky:
SetLength(myArray, Length(myArray) + 1);
myArray [High(myArray)] := Value; Ein kleines Beispiel Projekt: Ins Edit gibst du eine Zahl ein, mit Return wird die Zahl in die Liste übernommen. Mit Escape wird die Liste gelöscht (Das Edit muß hierbei den Fokus haben). Die Eingabe und Ausgabe wird im ebNumberKeyPress gesteuert. Ich vermute, mit "Sortieren mit direktem Auswahlort" ist ein sog. SelectionSort gemeint. Eine Übersicht mit diversen Sortierverfahren findest du hier ![]()
Delphi-Quellcode:
unit AS_Main;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TNumbers=Array of Integer; TMain = class(TForm) ebNumber: TEdit; lbUnsorted: TListBox; lbSorted: TListBox; lblUnsorted: TLabel; lblSorted: TLabel; procedure ebNumberKeyPress(Sender: TObject; var Key: Char); private fInput:TNumbers; fOutput:TNumbers; PROCEDURE Sort(List:TNumbers); PROCEDURE TransferToListBox(LB:TListBox; List:TNumbers); public { Public-Deklarationen } end; var Main: TMain; implementation {$R *.dfm} procedure TMain.ebNumberKeyPress(Sender: TObject; var Key: Char); begin case Ord(Key) of VK_Escape: begin fInput:=Nil; fOutput:=Nil; lbUnsorted.Clear; lbSorted.Clear; ebNumber.Text:=''; end; VK_Return: if ebNumber.Text<>'' then begin SetLength(fInput,Length(fInput)+1); fInput[High(fInput)]:=StrToInt(ebNumber.Text); fOutput:=Copy(fInput); Sort(fOutput); TransferToListBox(lbUnsorted,fInput); TransferToListBox(lbSorted,fOutput); ebNumber.Text:=''; end; VK_Back,Ord('0')..Ord('9'): Exit; else Key:=#0; end; end; PROCEDURE TMain.Sort(List:TNumbers); var I,J,K,H:Integer; begin for I:=0 to High(List)-1 do begin K:=I; for J:=I+1 to High(List) do if List[J]<List[K] then K:=J; H:=List[I]; List[I]:=List[K]; List[K]:=H; end; end; PROCEDURE TMain.TransferToListBox(LB:TListBox; List:TNumbers); var I:Integer; begin LB.Clear; LB.Items.BeginUpdate; for I:=0 to High(List) do LB.Items.Add(IntToStr(List[I])); LB.Items.EndUpdate; end; end. |
AW: Sortieren mit direktem Auswahlort
Na hoffentlich versteht er das alles...:shock:
Er war gerade auf dem richtigen Weg... Zitat:
Dein Button zum hinzufügen eines Wertes sollte ungefähr so ausehen:
Delphi-Quellcode:
Ein Reset-Button (übrigens gute Idee):
procedure Form1.Button....;
begin CASE Zaehler < 10 OF true : begin DEIN_ARRAY[Zaehler] := StrToInt(Edit1.Text); //Die Variable ZAEHLER global deklarieren INC(Zaehler); //Funktion zählt Integerwert um 1 auf end; false: begin Showmessage('Array voll.'); end; end; end;
Delphi-Quellcode:
procedure Form1.ResetButton...;
Var I : Integer; begin Zaehler := 0; For I := 0 to Length(DEIN_ARRAY)-1 do begin DEIN_ARRAY[I] := 0; end; Edit1.Text := ''; end; |
AW: Sortieren mit direktem Auswahlort
Ok ich hab es jetzt geschnallt. Dankeschön.
Aber zwei Fragen zur Verbesserung noch.
Delphi-Quellcode:
Wie die Kenner unter euch wohl feststellen können, erscheint durch die letzte Zeile auch am Ende der Sortierten Variablen ein --> ; _ Wie kann man dieses nun weglassen?
var sort : array[0..9]of integer;
max, min, s : integer ; procedure TForm1.FormCreate(Sender: TObject); begin max := High(sort); min := low (sort); s := 0 ; btnsort.enabled :=false; btnhinzu.enabled :=true; end; procedure TForm1.btnhinzuClick(Sender: TObject); begin sort[s]:= strtoint(edteingabe.caption); if s = 0 then lblunsort.caption:=lblunsort.caption + inttostr(sort[s]) else if sort[s]<>0 then lblunsort.caption:=lblunsort.caption + '; ' + inttostr(sort[s]); if s >= max then begin btnsort.enabled:=true ; btnhinzu.enabled:=false; end; s:=s + 1; end; procedure TForm1.btnsortClick(Sender: TObject); var b, h : integer ; begin For min:= 0 to max-1 Do Begin For b:= min+1 To max Do If (sort[b] < sort[min]) Then begin h :=sort[b] ; sort[b] :=sort[min]; sort[min]:=h ; end; end; For min := 0 To max do begin lblsort.caption := lblsort.caption + IntToStr(sort[min]) + '; '; end; end; end. Und noch eine Frage zum Array: Kann man es nicht definieren, mit einer Variablen --> sort : array[0..n] of integer.? Dann könnte man die Variable im Program eingeben lassen. Dadurch wäre es ein wenig flexibler. Die letzten Antworten habe ich erst eben gelesen, deswegen hat das nichts mehr damit zu tun... |
AW: Sortieren mit direktem Auswahlort
Entweder du nimmst ein statisches Array oder ein dynamisches. Ein paar Beiträge zurück findest du die Dejlarationen.
|
AW: Sortieren mit direktem Auswahlort
Und das Problem mit der letzten 'Zeile':
Delphi-Quellcode:
kannste z.B. so lösen:
For min := 0 To max do
begin lblsort.caption := lblsort.caption + IntToStr(sort[min]) + '; '; end;
Delphi-Quellcode:
Könnte man aber auch eleganter lösen... wenn's gewollt ist..
For min := 0 To max do
begin IF Min < max then lblsort.caption := lblsort.caption + IntToStr(sort[min]) + '; '; else lblsort.caption := lblsort.caption + IntToStr(sort[min]); end; |
AW: Sortieren mit direktem Auswahlort
Wenn wir schon beim eleganter sind, dann sowas in der Art:
Delphi-Quellcode:
unit ValueSorter;
interface type TValueSorter = class private FValues: array of Integer; FCurrentValue: string; FValue: Integer; FValuesAsString: string; procedure SetCurrentValue( const Value: string ); function GetValue( index: Integer ): Integer; function GetValueCount: Integer; protected // diese Methoden verrichten die eigentliche Arbeit procedure DoAddValue; procedure DoSort; procedure DoReset; procedure DoUpdateValuesAsString; public // Commands function CanAddValue: Boolean; procedure AddValue; function CanSort: Boolean; procedure Sort; function CanReset: Boolean; procedure Reset; // Eigenschaften property CurrentValue: string read FCurrentValue write SetCurrentValue; property ValueCount: Integer read GetValueCount; property Values[index: Integer]: Integer read GetValue; property ValuesAsString: string read FValuesAsString; end; implementation uses System.SysUtils; { TValueSorter } procedure TValueSorter.AddValue; begin if CanAddValue then DoAddValue; end; function TValueSorter.CanAddValue: Boolean; begin Result := TryStrToInt( FCurrentValue, FValue ); end; function TValueSorter.CanReset: Boolean; begin Result := Length( FValues ) > 0; end; function TValueSorter.CanSort: Boolean; begin Result := Length( FValues ) > 1; end; procedure TValueSorter.DoAddValue; begin SetLength( FValues, Length( FValues ) + 1 ); FValues[High( FValues )] := FValue; FCurrentValue := ''; DoUpdateValuesAsString; end; procedure TValueSorter.DoReset; begin SetLength( FValues, 0 ); DoUpdateValuesAsString; end; procedure TValueSorter.DoSort; var LIIdx, LJIdx, LMinIdx: Integer; LTmp: Integer; begin For LIIdx := Low( FValues ) to High( FValues ) - 1 Do Begin LMinIdx := LIIdx; For LJIdx := LIIdx + 1 To High( FValues ) Do If ( FValues[LJIdx] < FValues[LMinIdx] ) Then begin LTmp := FValues[LJIdx]; FValues[LJIdx] := FValues[LMinIdx]; FValues[LMinIdx] := LTmp; end; end; DoUpdateValuesAsString; end; procedure TValueSorter.DoUpdateValuesAsString; var LIdx: Integer; begin FValuesAsString := ''; for LIdx := Low( FValues ) to High( FValues ) do begin if LIdx > Low( FValues ) then FValuesAsString := FValuesAsString + ';'; FValuesAsString := FValuesAsString + IntToStr( FValues[LIdx] ); end; end; function TValueSorter.GetValue( index: Integer ): Integer; begin Result := FValues[Index + Low( FValues )]; end; function TValueSorter.GetValueCount: Integer; begin Result := Length( FValues ); end; procedure TValueSorter.Reset; begin if CanReset then DoReset; end; procedure TValueSorter.SetCurrentValue( const Value: string ); begin FCurrentValue := Value; end; procedure TValueSorter.Sort; begin if CanSort then DoSort; end; end.
Delphi-Quellcode:
unit Form.Main;
interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.Actions, Vcl.ActnList, Vcl.AppEvnts, ValueSorter; type TForm1 = class( TForm ) ValueEdit: TEdit; AddButton: TButton; SortButton: TButton; ResetButton: TButton; Label1: TLabel; ApplicationEvents1: TApplicationEvents; procedure ApplicationEvents1Idle( Sender: TObject; var Done: Boolean ); procedure ValueEditChange( Sender: TObject ); procedure AddButtonClick( Sender: TObject ); procedure SortButtonClick( Sender: TObject ); procedure ResetButtonClick( Sender: TObject ); private FValueSorter: TValueSorter; public procedure AfterConstruction; override; procedure BeforeDestruction; override; end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.AddButtonClick( Sender: TObject ); begin FValueSorter.AddValue; end; procedure TForm1.AfterConstruction; begin inherited; FValueSorter := TValueSorter.Create; end; procedure TForm1.ApplicationEvents1Idle( Sender: TObject; var Done: Boolean ); begin // Aktualisierung der Anzeige ValueEdit.Text := FValueSorter.CurrentValue; Label1.Caption := FValueSorter.ValuesAsString; AddButton.Enabled := FValueSorter.CanAddValue; SortButton.Enabled := FValueSorter.CanSort; ResetButton.Enabled := FValueSorter.CanReset; end; procedure TForm1.BeforeDestruction; begin FValueSorter.Free; inherited; end; procedure TForm1.ResetButtonClick( Sender: TObject ); begin FValueSorter.Reset; end; procedure TForm1.SortButtonClick( Sender: TObject ); begin FValueSorter.Sort; end; procedure TForm1.ValueEditChange( Sender: TObject ); begin // Aktualisierung der Benutzereingabe FValueSorter.CurrentValue := ValueEdit.Text; end; end. |
AW: Sortieren mit direktem Auswahlort
LOL!
Haste dat alles grad reingehackt?! NETT! |
AW: Sortieren mit direktem Auswahlort
Zitat:
|
AW: Sortieren mit direktem Auswahlort
Die Klasse macht imho zu viel: 1. Liste verwalten UND 2. sortieren. Trenn doch den Sortierer von der Liste.
|
AW: Sortieren mit direktem Auswahlort
Zitat:
|
AW: Sortieren mit direktem Auswahlort
:lol:
Ich schätze, wenn rebellxsky das Code-Beispiel von dir, Sir Rufo, in der Schule vorbringt, könnte man vielleicht... ein bisschen... daran zweifeln, dass das alles auf seinem Mist gewachsen ist. :wink: Damit möchte ich allerdings nicht deinen Lösungsvorschlag schmälern. :thumb: Ergänzend müsstest du jetzt nur erklären, wie das alles funktioniert, damit er das zumindest versteht... und sich bei seinem nächsten Problem auch traut, mal wieder etwas zu posten... :roteyes: |
AW: Sortieren mit direktem Auswahlort
rebellxsky, lade Dir mein Sortierkino herunter (auch in diesem Forum zu finden), das enthält auch Select(ion)sort. Es funktioniert auch "in place / in situ", man benötigt demnach keine zusätzliche Datenstruktur, um die sortierte Menge zu erzeugen.
|
AW: Sortieren mit direktem Auswahlort
@humbuck
Aus dem Grund habe ich den Quellcode auch hier veröffentlicht, weil man ihm das nicht glauben würde. Also habe ich auch nicht seine Hausaufgaben gemacht. Aber an dem konkreten Beispiel kann man eben die oft abstrakt ans Herz gelegte Trennung zwischen Logik und Ansicht zeigen. Nur darum geht es mir dabei ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz