AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Probleme bei der Implementierung von Radixsort
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme bei der Implementierung von Radixsort

Ein Thema von Isildur · begonnen am 7. Nov 2007 · letzter Beitrag vom 9. Nov 2007
 
Isildur

Registriert seit: 7. Nov 2007
2 Beiträge
 
#1

Probleme bei der Implementierung von Radixsort

  Alt 7. Nov 2007, 20:33
Ich schreibe gerade für die Schule eine Implementation von Radixsort. Zwar habe ich eine fertige Implementation gefunden allerdings liegt diese vom Wissenstand weit über meiner oder der meines Kurses.

Daher habe ich versucht das Verfahren mit relativ einfachen Techniken wiederzugeben, da es hierbei eh um die Demonstration nicht um die Geschwindkeit in einem Anwendungsprogramm geht.

Der zugegeben etwas wirre Code sieht derzeit so aus
Delphi-Quellcode:
procedure TSortieren.RadixSort;
var sorttil, i, j, k, l: integer;
var temp : array[0..255] of array of string; //array für alle ansichars
var len : integer;
var pos1, pos2 : integer;
begin
//da sorttil := 4; nur nach den ersten 4 Zeichen sortieren
for sorttil := 4 downto 1 do begin
  //Partionierungsphase
  for i := 1 to Anzahl-1 do begin
    if length(Feld[i])>=sorttil then begin
      pos1 := ord(Feld[i,sorttil]);
      len := length(temp[pos1]);
      pos2 := len-1;
      if len=0 then pos2 := 0;
      setlength(temp[pos1],len+1);
      temp[pos1, pos2] := Feld[i];
    end;
  end;
  //Sammelphase
  l:=1;
  j:= 0;
  k:=0;
  while j <= length(temp)-1 do begin
    while k <= length(temp[j])-1 do begin
      Feld[l] := temp[j,k];
      k:=k+1;
      l:=l+1;
    end;
    j:=j+1;
  end;
end;
Anzahl ist ein vorgegebener Wert der Anzahl der Elemente im Array Feld beinhaltet(das ist etwas wirr, da die an dieser Stelle vorgegebene Implementation von Seitens meines Lehrers nicht ganz sauber ist(es gibt ein Element Feld[0] aber dies ist leer...), aber dies dürfte eigentlich keine Auswirkungen auf die grundsätzliche Ordnung haben).
Ich habe am Ende while-Schleifen verwendet weil aus mir völlig unbegreiflichen Gründen eine for-Schleife nach dem Muster for j := 0 to length(temp)-1 do nicht bei 0 sondern bei length(temp)-1 anfing zu zählen und dann runter zählte. So gehts jetzt, ich habe kA wieso.

Für eine kurze anschauliche Beschreibung des Verfahrens siehe hier.


Nun das Problem ist, dass die Werte nachher völlig ungeordnet sind genauso wie vorher und ich derzeit keine Idee habe woran das liegen könnte(vll übersehe ich auch einfach nur mal wieder ein Detail). Hat jmd. eine Idee? Für weitere Informationen einfach fragen.

ps:Sry wegen der etwas ungenauen Problembeschreibung.
  Mit Zitat antworten Zitat
 


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 20: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