Einzelnen Beitrag anzeigen

r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#3

Re: Insertion Sort Problem

  Alt 28. Okt 2006, 09:30
Für was out-of-place sortieren? InsertionSort is doch geradezu gemacht dafür Verkettete Listen zu sortieren... Warum? Verschieben is bei verketteten Listen O(1), bei arrays O(n)(naja nciht ganz, das wär jetzt worst-case. Im average-case isses etwas besser). Du kannst also annähernd linear sortieren! Jedenfalls in Bezug auch die Zuweisungen[1].

Alles was du dazu brauchst is ne Move-Prozedur/Methode. Die sieht ungefähr so aus:
Delphi-Quellcode:
// Pseudocode:
// Element entfernen:
  VorherigesElement.Next := Element.Next;

// Element an der gegebenen Stelle einfügen:
  Element.Next := ElementVorRichtigerPosition.Next;
  ElementVorRichtigerPosition.Next := Element;
[1] Die Vergleiche sind da wider etwas schlechter, als bei den arrays, da der Zugriff aufwändiger ist. Da aber InsertionSort sowieso relativ wenige Vergleiche braucht, is InsertionSort in diesem Fall sehr gut geeignet...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat