Delphi-Quellcode:
for i:=0 to arraysize do // arraysize=25 Mio.
begin
array1[i]:=int64_x; //irgendeine zahl, zB: Zufallszahl
for j:=0 to i-1 do
if int64_x = array1[j] then
found:=true;
end;
Es kann ja nichts finden. Du fügst eine Zahl bei Index i ein suchst aber bis Index i-1
Er muss ja nix finden: Ich packe an die N+1.te Stelle eine Zahl und erhöhe nur, wenn die Zahl vorher (0..N) noch nicht gefunden wurde.
Sofern die Daten nicht sortiert vorliegen, sollte das Ausschließen doppelter Einträge über eine Hashmap am Schnellsten sein. Das Suchen eines Elements in einer Hashmap ist vom Aufwand O(1), das binäre Suchen dagegen O(log n).
Die Hashfunktion einer 64-bit Zahl lässt sich auf N mod <HashMapSize> kürzen.
Ich schaffe hier 1 Mio Tests in 370ms. Das wäre ja auszuhalten.