![]() |
Min-Sort Verfahren
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Leute
Ich brauche dringend hilfe in der Schule müssen wir als Hausübung Zuffalsgenerierte Zahlen in einem memo ausgeben und dies dann sortiert in einem zweiten ausgeben. Das ganze soll mit dem Min - Sort Verfahren geschehen doch leider habe ich keine Ahnung wie das gehen soll :gruebel: !!! Könnt ihr mir bitte helfen :?: Ich habe den Arbeitsauftrag per email bekommen (ich häng in euch an ) |
Re: Min-Sort Verfahren
Naja, steht doch im Text, oder?
Suche in deinem Array den kleinsten Wert und schreibe ihn an die erste Stelle in der Ausgabeliste. Danach suchst du aus dem verbleibenden Rest, den kleinsten Wert und schreibst ihn an die nächste Stelle in der Ausgabeliste, usw. |
DP-Maintenance
Dieses Thema wurde von "Matze" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Hier gehören nur funktionierende Code-Snippets hinein. |
Re: Min-Sort Verfahren
Schaut man mal über Google, wie der Sortieralgorithmus funktioniert bekommt man sogar bei Wikipedia den fertigen Pascal-Code :-P
Delphi-Quellcode:
Hab ihn nicht getestet, dürfte aber korrekt sein.
{ MinSort, als eine Variante von SelectionSort }
{ Uebergabe: Zu sortierendes Array, das an den Stellen 1 bis n mit natuerlichen Zahlen belegt ist } Procedure MinSort(Var Feld: Array Of LongInt); Var i, j : LongInt; { Zaehlvariablen } Temp, Min: LongInt; { Zwischenspeicher, Minimum } Begin For i := 0 To High(Feld) Do Begin Min := i; For j := i + 1 To High(Feld) Do If Feld[j] < Feld[Min] Then Min := j; Temp := Feld[Min]; Feld[Min] := Feld[i]; Feld[i] := Temp; End; End; { Procedure MinSort } Wenn zum Beispiel in Edit1 die Länge des Arrays (Anzahl dessen Felder) eingegben werden soll, dann geht das wie folgt:
Delphi-Quellcode:
und im Quelltext:
iArray = array of integer;
Delphi-Quellcode:
Vergiss nicht in der FormCreate Randomize; aufzurufen um den Zufallsgenerator zu initialisieren.
if TryStrToInt(Edit1.Text, x) then begin
setlength(iArray, x); for i := 0 to x do iArray[i] := Random(100) else ShowMesage('Fehlerhafte Eingabe. +'Edit1.Text'+ entspricht keinem Integer!'); end; |
Re: Min-Sort Verfahren
Zitat:
|
Re: Min-Sort Verfahren
Jap und zum Selectionsort gehören auch Min- und Maxsort :)
|
Re: Min-Sort Verfahren
Zitat:
|
Re: Min-Sort Verfahren
Mal 'n wenig QällKot spendier:
Delphi-Quellcode:
unit a_scheiss;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Memo1: TMemo; Memo2: TMemo; procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } za: array [1 .. 20] of integer; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var i,x,y: integer; begin memo1.Clear; memo2.Clear; for I := 1 to 20 do za[i] := i; for I := 1 to 20 do begin x := random(20-i)+1; y := za[i]; za[i] := za[x]; za[x] := y; end; for i := 1 to 20 do memo1.Lines.Add(inttostr(za[i])); end; procedure TForm1.Button2Click(Sender: TObject); var i,j,m,x: integer; begin for I := 1 to 20 do begin x := i; for j := i+1 to 20 do if za[x] > za[j] then x := j; begin m := za[x]; za[x] := za[i]; za[i] := m; end; memo2.Lines.Add(inttostr(za[i])); end; end; procedure TForm1.Button3Click(Sender: TObject); begin close; end; procedure TForm1.FormCreate(Sender: TObject); begin randomize; end; end.
Delphi-Quellcode:
//Edit: mal nachgelesen hab
object Form1: TForm1
Left = 0 Top = 0 Caption = 'A Scheiß' ClientHeight = 216 ClientWidth = 335 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object Button1: TButton Left = 4 Top = 6 Width = 75 Height = 25 Caption = 'erzeuge' TabOrder = 0 OnClick = Button1Click end object Button2: TButton Left = 4 Top = 32 Width = 75 Height = 25 Caption = 'max sort' TabOrder = 1 OnClick = Button2Click end object Button3: TButton Left = 4 Top = 58 Width = 75 Height = 25 Caption = 'close' TabOrder = 2 OnClick = Button3Click end object Memo1: TMemo Left = 83 Top = 0 Width = 122 Height = 213 Lines.Strings = ( 'Memo1') TabOrder = 3 end object Memo2: TMemo Left = 206 Top = 0 Width = 123 Height = 213 Lines.Strings = ( 'Memo2') TabOrder = 4 end end |
Re: Min-Sort Verfahren
Zitat:
Zitat:
![]() Ganz oben, die Erläuterung. Ich beziehe mich darauf. |
AW: Min-Sort Verfahren
Hallo,
ich wollte das auch mal ausprobieren, aber bei mir kommt irgendwie immer ein Fehler. Könnt ihr mir dabei helfen? :?:
Code:
Bei mir erscheint dann "uselect.pas(57,12) Error: Illegal assignment to for-loop variable "i" "
unit USelect;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Memo1: TMemo; Memo2: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { private declarations } za: array [1..20] of integer; public { public declarations } end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); var i,x,y:Integer; begin memo1.Clear; memo2.Clear; for I:= 1 to 20 do za[i] :=i; for I:= 1 to 20 do begin x:=Random(20-i)+1; y:=za[i]; za[i]:=za[x]; za[x]:=y; for i:= 1 to 20 do memo1.Lines.Add(inttostr(za[i])); end; end; procedure TForm1.Button3Click(Sender: TObject); var i,j,m,x:integer; begin for I:= 1 to 20 do begin x:=i; for j:=i+1 to 20 do if za[x] > za[j] then x:=j; begin m:=za[x] za[x] := za [i]; za[i] := m; end; memo2.Lines.Add(inttostr(za[i])); end; end; end; procedure TForm1.FormCreate(Sender:TObject); begin randomize; end; end. Ich verstehe da nicht was von mir verlangt wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:12 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-2025 by Thomas Breitkreuz