AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Delphi Verschiedene Sortier Algorithmen (unter anderem Quicksort)
Thema durchsuchen
Ansicht
Themen-Optionen

Verschiedene Sortier Algorithmen (unter anderem Quicksort)

Ein Thema von Tarry · begonnen am 15. Aug 2008 · letzter Beitrag vom 9. Nov 2009
Antwort Antwort
Tarry
Registriert seit: 6. Nov 2007
So,
hier eine Liste mit 4 verschiedenen Sortier Algorithmen:

Delphi-Quellcode:
unit SortAlgos;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

procedure WertTauschen(var Werte: Array of Integer; StelleA, StelleB: Integer);
procedure BubbleSort(var dummy: Array of Integer; n : integer);
procedure Sortiere_Einfuegen(var dummy: Array of Integer; n : integer);
procedure Sortiere_Auswahl(var dummy: Array of Integer; n : integer);
procedure QuickSort(var dummy: Array of Integer; erstes,letztes: integer);

implementation


procedure WertTauschen(var Werte: Array of Integer; StelleA, StelleB: Integer);
var tempI: integer;
begin
tempI := Werte[StelleA];
Werte[StelleA] := Werte[StelleB];
Werte[StelleB] := tempI;
end;

procedure BubbleSort(var dummy: Array of Integer; n : integer);
var i,j : integer;
begin
for i := 0 to n do
  for j := 0 to n - 1 - i do {ListBox beginnt bei Zeile 0}
    if dummy[j] > dummy[j+1] then
    WertTauschen(Dummy,j,j+1);
end;

procedure Sortiere_Einfuegen(var dummy: Array of Integer; n: integer);
var i,j,hilf: integer;
begin
  for i := 1 to n do {Änderung gegenueber dem Arbeiten auf ARRAY: i:=1}
    begin
      j := i - 1;
      hilf := dummy[i];
      while ((j >= 0) and (hilf < dummy[j])) do {j<=0}
        begin
          dummy[j+1] := dummy[j];
          dec(j);
        end;
      dummy[j+1] := hilf;
    end
end;

procedure Sortiere_Auswahl(var dummy: Array of Integer; n: integer);
var i,j,tausch_index, min: integer;
begin
  for i := 0 to n - 1 do
   begin
    min := dummy[i];
    tausch_index := i;
    for j := i + 1 to n do
    begin
      if min > dummy[j] then
      begin
        tausch_index := j;
        min := dummy[j]
      end;
    end;
    if tausch_index > i then WertTauschen(Dummy,i,tausch_index);
   end
end;

procedure QuickSort(var dummy: Array of Integer; erstes,letztes: integer);
var vonLinks, vonRechts, mitte, vergleichsElement: integer;
begin
if erstes < letztes then {mind. 2 Elemente}
begin {Zerlegung vorbereiten}
  mitte := (erstes + letztes)div 2;
  vergleichsElement := dummy[mitte];
  vonLinks := erstes;
  vonRechts := letztes;
  while vonLinks <= vonRechts do {noch nicht fertig zerlegt?}
  begin
    while dummy[vonLinks] < vergleichsElement do {linkes Element suchen}
    vonLinks := vonLinks + 1;
    while dummy[vonRechts] > vergleichsElement do {rechtes Element suchen}
    vonRechts := vonRechts - 1;
    if vonLinks <= vonRechts then
      begin
        WertTauschen(Dummy,vonLinks,vonRechts); {Elemente tauschen}
        vonLinks := vonLinks + 1;
        vonRechts := vonRechts - 1;
      end;
  end;
  Quicksort(dummy,erstes,vonRechts); {li. und re. Teilfeld zerlegen}
  Quicksort(dummy,vonLinks,letztes);
end;
end;

end.
Gruß
Tarry
Angehängte Dateien
Dateityp: pas sortalgos_151.pas (2,8 KB, 32x aufgerufen)
"Es gibt zwei Dinge, die unendlich sind. Das Universum und die menschliche Dummheit. Beim Universum bin ich mir noch nicht ganz sicher." -Albert Einstein

Probiere doch mal mein Wecker aus
--> http://tarry91.quotaless.com/index.html
 
hathor
 
#2
  Alt 16. Aug 2008, 14:25
Bei manchen DELPHI-Versionen ist ein Sortierbeispiel dabei:

suche unter DEMOS, THREADS...
  Mit Zitat antworten Zitat
omata

 
Delphi 7 Enterprise
 
#3
  Alt 16. Aug 2008, 14:37
Hier mal eine überarbeitete Version...
Angehängte Dateien
Dateityp: pas sortalgosu_122.pas (2,6 KB, 70x aufgerufen)
  Mit Zitat antworten Zitat
shmia

 
Delphi 5 Professional
 
#4
  Alt 20. Aug 2008, 15:18
Hier gibt es ebenfalls Sortieralgorithmen in der Code-Library.
Allerdings ist der Code objektorientiert und man kann im Prinzip alles (arrays, Stringlisten, Objektlisten) sortieren.
Ausserdem wird die Anzahl der Vergleiche und Vertauschungen mitgezählt; diese Werte sind nützlich, um die Leistungsfähigkeit eines Sortieralgorithmus zu beurteilen.
Andreas
  Mit Zitat antworten Zitat
9. Nov 2009, 10:49
Dieses Thema wurde von "Daniel G" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Open-Source" verschoben.
In der CodeLib gibt es bereits eine ähnliche Funktion...
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:56 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