Einzelnen Beitrag anzeigen

Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Suchen in unsortiertem Array of Integer beschleunigen.

  Alt 12. Mai 2009, 09:53
Ok, das ganze Paket dauert noch eine Weile, hab' mich entschlossen noch ein paar Funktionen zuzufügen, bevor ich es freigebe. Aber zum Problem habe ich eben eine Lösung gefunden:

Der Index enthält jetzt zwei Werte: Offset (in der Datei) und UnsortedAnc (Vorfahre in der unsortierten Liste). Sind bei 1 Mio. Einträgen nur 4 MByte. Nach dem Sortieren wird UnsortedAnc einmal angepasst (das optimiere ich noch, damit es während dem Sortieren passiert). Sortieren dauert ein paar ms. länger, aber da nur einmal, fällt das nicht wirklich ins Gewicht.

Da ich immer nur den Index-Eintrag mit dem höchsten Offset-Eintrag brauche und nicht einen beliebigen Offset suchen muss, reicht das. Eine private Variable der Index-Klasse merkt sich den Index mit dem höchsten Offset. Soll der gelöscht werden, wir die Variable zuvor mit UnsortedAnc aus diesem Index aktualisiert. Somit hab' ich keine n-Zugriffe mehr, sondern nur noch einen + neue Zuweisung. Zudem ist es der gleiche Code, egal ob der Index sortiert oder unsortiert vorliegt.

Tree's verstehe ich, aber strengen mich an. Skiplisten verstehe ich (noch) nicht... auf jeden Fall ist mir im Moment die klassische Lösung am liebsten
  Mit Zitat antworten Zitat