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
Seite 1 von 4  1 23     Letzte »    
delphi_master

Registriert seit: 22. Nov 2007
1 Beiträge
 
#1

Min-Sort Verfahren

  Alt 22. Nov 2007, 19:09
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 !!! Könnt ihr mir bitte helfen Ich habe den Arbeitsauftrag per email bekommen (ich häng in euch an )
Angehängte Dateien
Dateityp: doc sortieren_einer_zuf_lligen_zahlenliste_mit_min_107.doc (22,0 KB, 20x aufgerufen)
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#2

Re: Min-Sort Verfahren

  Alt 22. Nov 2007, 19:23
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.
  Mit Zitat antworten Zitat
22. Nov 2007, 19:25
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.
quendolineDD

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

Re: Min-Sort Verfahren

  Alt 22. Nov 2007, 19:44
Schaut man mal über Google, wie der Sortieralgorithmus funktioniert bekommt man sogar bei Wikipedia den fertigen Pascal-Code

Delphi-Quellcode:
{ 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 }
Hab ihn nicht getestet, dürfte aber korrekt sein.

Wenn zum Beispiel in Edit1 die Länge des Arrays (Anzahl dessen Felder) eingegben werden soll, dann geht das wie folgt:

iArray = array of integer; und im Quelltext:

Delphi-Quellcode:
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;
Vergiss nicht in der FormCreate Randomize; aufzurufen um den Zufallsgenerator zu initialisieren.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#5

Re: Min-Sort Verfahren

  Alt 23. Nov 2007, 19:08
Zitat von guidok:
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.
sag mal, ist das nicht der selectionsort??
  Mit Zitat antworten Zitat
quendolineDD

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

Re: Min-Sort Verfahren

  Alt 23. Nov 2007, 19:10
Jap und zum Selectionsort gehören auch Min- und Maxsort
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#7

Re: Min-Sort Verfahren

  Alt 23. Nov 2007, 19:23
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...
  Mit Zitat antworten Zitat
GreenHorn3600

Registriert seit: 24. Jun 2007
165 Beiträge
 
#8

Re: Min-Sort Verfahren

  Alt 23. Nov 2007, 20:04
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:
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
//Edit: mal nachgelesen hab
  Mit Zitat antworten Zitat
quendolineDD

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

Re: Min-Sort Verfahren

  Alt 26. Nov 2007, 20: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
 
#10

AW: Min-Sort Verfahren

  Alt 4. Mär 2013, 11: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 12:00 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz