AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Code-Bibliothek Library: Algorithmen Delphi 3 verschiedene Sortierverfahren
Thema durchsuchen
Ansicht
Themen-Optionen

3 verschiedene Sortierverfahren

Ein Thema von hummer · begonnen am 12. Jun 2003 · letzter Beitrag vom 12. Jun 2003
Antwort Antwort
Benutzerbild von hummer
hummer

Registriert seit: 27. Mai 2003
Ort: Hattingen
437 Beiträge
 
Delphi 7 Enterprise
 
#1

3 verschiedene Sortierverfahren

  Alt 12. Jun 2003, 19:11
Hallo
Hier stelle ich drei verschiedene Sortierverfahren vor, mit denen man Zahlenketten sortieren kann.
Zur Eingabe und Ausgabe habe ich einen neuen Type definiert.

type tDaten : array [1..n] of integer n : Anzahl der Zahlen

Benutzt wird in allen Sortierverahren eine Procedur, die 2 Zahlen mit Hilfe einer Variable vertauscht.

Delphi-Quellcode:
procedure tausche (var a, b : integer);
var
  hilf: integer;
begin
  hilf := a;
  a := b;
  b := hilf;
end;
1. Sortieren durch direkte Auswahl
Es wird zuerst die Zahl mit dem niedrigsten Wert aus der Zahlenkette rausgesucht. Diese wird dann mit Hilfe eines Dreieckstausches mit der ersten Zahl vertauscht. Die erste Zahl ist dann sortiert. Dann wird aus dem nichtsortierten Teil die niedriegste Zahl rausgesucht und mit der ersten Zahl des nichtsortierten Teiles vertauscht. Das Array ist sortiert, wenn der nichtsortierte Teil nur noch aus einer Zahl besteht.

Delphi-Quellcode:
procedure direkte_Auswahl (Eingabe : tDaten; n : integer; VAR Ausgabe tDaten);
var
  x, y : integer;
begin
  for x := 1 to n do
  begin
    for y := position1 + 1 to n do
      if Eingabe[y] < Eingabe[x] then
        tausche (Eingabe[x], Eingabe[y]);
  end;
  Ausgabe := Eingabe;
end;
2. Sortieren durch direktes Einfügen
Die erste Zahl wird als sortiert angesehen. Dann wird die erste Zahl des nichtsortierten Teils genommen und an die richtige Stelle im sortierten Teil eingefügt. Das Array ist sortiert, wenn die letzte Zahl richtig eingefügt worden ist.

Delphi-Quellcode:
procedure direktes_Einfügen (Eingabe : tDaten; n : integer; VAR Ausgabe tDaten);
var
  x, y : integer;
begin
  for x := 1 to n do
  begin
    y := x;
    while Eingabe[y+1] < Eingabe[y] do
    begin
      tausche (Eingabe[y], Eingabe[y+1]);
      if y > 1 then
      y := pred (y);
    end;
    Ausgabe := Eingabe;
  end;
end;
3. Bubble-Sort
Es werden von Anfang an immer zwei nebeneinander liegende Karten verglichen. Liegen sie nicht in der richtigen Reihenfolge werden sie vertauscht. Das wird dann bis zum Ende des Arrays gemacht. Nach dem ersten Durchgang ist die letzte Karte sortiert. Dann wird der erste Schritt bis zum sortierten Teil wiederholt. Der Vorgang wird solange wiederholt, bis bei einem Durchlauf keine Karten mehr vertauscht wurden.

Delphi-Quellcode:
Procedure Bubble-Sort (Eingabe : tDaten; n : integer; VAR Ausgabe : tDaten);
var
  x, y : integer;
  tausch : boolean;
begin
  y := n;
  tausch := true;
  while tausch do
  begin
    tausch := false;
    for x := 1 zo y -1 do
    if Eingabe[x] > Eingabe[x+1] then
    begin
      tausch := true;
      tausche (Eingabe[x], Eingabe[x+1]);
    end;
    y := pred(y);
    Ausgabe := Eingabe;
  end;
end;
Bei Rückfragen stehe ich gerne zur Verfügung.
Viel Spass beim Sortieren.

[edit=Matze][code]-Tags durch [delphi]-Tags ersetzt und Code formatiert. Mfg, Matze[/edit]
Manuel
unser Infolehrer -> Wissen ist Macht. Wir wissen nichts. Macht nichts.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 12. Jun 2003, 19:47
Dieses Tutorial hast du schon gefunden, ja?
http://www.delphipraxis.net/viewtopic.php?t=344
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 03:44 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