AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Min-Sort Verfahren

Ein Thema von delphi_master · begonnen am 22. Nov 2007 · letzter Beitrag vom 5. Mär 2013
Antwort Antwort
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#1

Re: Min-Sort Verfahren

  Alt 26. Nov 2007, 19:30
Zitat von grenzgaenger:
Zitat von quendolineDD:
Jap und zum Selectionsort gehören auch Min- und Maxsort
nicht dass ich wüsste. das asc/dsc gibt ja nur die sortierrichtung an... ist aber kein eigenständiges sortierverfahren...
Zitat von Wikipedia:
Der Begriff Sortierlese oder Selection-Sort (englisch selection »Auswahl«, to sort »sortieren«), auch MinSort (von Minimum) bzw. MaxSort (von Maximum), Selectsort oder ExchangeSort (AustauschSort) genannt, bezeichnet einen naiven Sortieralgorithmus, der in-place arbeitet und in seiner Grundform instabil ist, wobei er sich auch stabil implementieren lässt. Die Komplexität von SelectionSort ist, in der Landau-Notation ausgedrückt, O(n2).
http://de.wikipedia.org/wiki/Selectionsort
Ganz oben, die Erläuterung. Ich beziehe mich darauf.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
cobi23

Registriert seit: 25. Feb 2013
12 Beiträge
 
#2

AW: Min-Sort Verfahren

  Alt 4. Mär 2013, 10:54
Hallo,

ich wollte das auch mal ausprobieren, aber bei mir kommt irgendwie immer ein Fehler. Könnt ihr mir dabei helfen?
Code:
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.
Bei mir erscheint dann "uselect.pas(57,12) Error: Illegal assignment to for-loop variable "i" "
Ich verstehe da nicht was von mir verlangt wird.

Geändert von cobi23 ( 4. Mär 2013 um 11:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Min-Sort Verfahren

  Alt 4. Mär 2013, 11:00
Hallo,

ich wollte das auch mal ausprobieren, aber bei mir kommt irgendwie immer ein Fehler. Könnt ihr mir dabei helfen?
Würdest Du uns auch verraten welche Fehlermeldung?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#4

AW: Min-Sort Verfahren

  Alt 4. Mär 2013, 11:23
Da Pascal keinen Unterschied zwischen i und I macht, benutzt du in
Delphi-Quellcode:
for i:= 1 to 20 do
memo1.Lines.Add(inttostr(za[i]));
den äußeren Schleifenindex doppelt. Nimm einfach ein anderen zB k (der dann natürlich deklariert werden muß).
  Mit Zitat antworten Zitat
cobi23

Registriert seit: 25. Feb 2013
12 Beiträge
 
#5

AW: Min-Sort Verfahren

  Alt 4. Mär 2013, 11:48
Danke für die Antwort, jetzt kommt aber bei mir diese Fehlermeldung:

"uselect.pas(73,7) Fatal: Syntax error, ";" expected but "identifier ZA" found
"

Code:
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,k: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 k:= 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.
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Min-Sort Verfahren

  Alt 4. Mär 2013, 12:11
In dem Fall sagt die Meldung doch schon, was Sache ist
Warum wird in der Zeile wohl ein Semikolon erwartet?
Kurzer Blick in die Zeile davor...
  Mit Zitat antworten Zitat
cobi23

Registriert seit: 25. Feb 2013
12 Beiträge
 
#7

AW: Min-Sort Verfahren

  Alt 4. Mär 2013, 12:56
Oh, mein Fehler. Danke das du mich darauf hingewiesen hast. Das Programm funktioniert, aber leider kommen bei dem Memo-Feld für die Zahlen immer die gleichen Zahlen. Und wenn ich auf das Button für das Ordnen der Zahlen drücke, kommen unterschiedliche Zahlen heraus.


Code:
unit USelection;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    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..100] 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,k:integer;
begin
  memo1.Clear; memo2.Clear;
  for I:=1 to 100 do za[i]:=i;
  for I:=1 to 100 do
  begin
    x:=Random(100-i)+1;
    y:=za[i];
    za[x]:=y;
    for k:=1 to 100 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 100 do
  begin
    x:=i;
    for j:=i+1 to 100 do
    if za[x] > za[j] then
    x:=j;
    begin
    m:=za[x];
    za[x]:=za[i];
    za[i]:=m;
    memo2.lines.Add(inttostr(za[i]));
    end;
  end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  randomize;
end;

end.
Könnt ihr mir bitte helfen?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 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