Einzelnen Beitrag anzeigen

Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#19

Re: Füllung einer Zahlenliste

  Alt 13. Sep 2005, 16:08
Zitat von Sharky:
Mal im Kopf gedacht:
Es gibt 10 000 Zahlen. Die Zahlen 1 bis 5000 sind am Stück vorhanden.
Dann muss also Listbox1.Items[5000-1] = '5000' sein.
Ich muss also nur die Items von Index 5000 bis Count-1 prüfen.
Wenn die Bedingung nicht zutrifft muss ich nur Index 0 bis 5000-1 prüfen.
Ich habe also durch eine Rechenoperation den Raum der möglichen "Felder" halbiert.
So, und das macht man jetzt immer so weiter bis man nur noch zwei Zahlen hat.

Rechne mal aus was es bei 1 000 000 000 Zahlen passiert wenn die einzig nicht besetzte Zahl 999 999 999 ist
Mit deiner Schleife musst Du nun 999 999 999 Vergleiche machen.
Ja das is mir klar, wenn er sowas weiß ist das kein Problem. Nur wie sicher kann er denn jetzt sagen, bis zu welcher Zahl es keine Lücken gibt? Das meinte ich. Das könnte man natürlich gesondert speichern, aber ich denke bei Zahlen von 1 bis 999 lohnt sich das nur unmerklich.

//Edit: Schwachfug, natürlich hast du recht. Nich gründlich genug gelesen, was du geschrieben hast. Klar könnte man durch die Rekursion einen erheblichen Geschwindigkeitszuwachs bekommen. Allerdings stellt sich die Frage, wie viel das bei 999 Elementen bringt...

Zitat von egal:
Es wird eigentlich schon vorher abgefangen, ob diese Zahl schon vorhanden ist. Ich hatte am Anfang auch ähnliche Idee, eine Zahl mit nächster vergleichen und wenn Unterschied nicht 1 ist, dann weiß man, aha, da ist eine Lücke, da kann man eine Zahl reinschreiben. Ich kann auch noch prüfen, ob die letzte Zahl nicht gleich den Zahlenanzahl. Wenn so ist, dann brauche ich auch nichts machen. Mir stört noch, dass ich meine Liste, bzw. Array immer wieder sortieren soll.
Brauchst es doch nicht immer wieder sortieren. Einmal am Anfang reicht. Und das kannst du ja eigentlich auch direkt in der DB erledigen lassen. Und dann fügst du die Zahlen direkt an der richtigen Stelle mit Insert (bei ner ListBox) ein und mußt danach nix mehr sortieren.
Zitat von egal:
Dann brauche ich auf jeden Fall die kleinstmögliche Zahl. Und wie gesagt, maximale Zahl ist 999.
Nochmal: Genau das macht mein Code. Die Prüfung, ob die Zahl 0 oder größer 999 ist, mußt du natürlich evtl noch einbauen
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat