Damit prüfst du aber nur, ob zwei aufeinanderfolgende (+1) Werte gleich sind.
Deine While-Schleife entspricht ja dieser For-Schleife:
(vergleiche jeden Wert mit seinem Nachfolger)
Delphi-Quellcode:
for i := 0 to High(arr) - 1 do
if arr[i] = arr[i + 1] then Gleich;
> Bei einem sortieren Array wäre das aber dennoch vollkommen ausreichend.
So könnte man z.B. prüfen, ob Werte irgendwo mehrfach vorkommen.
(vergleiche jeden Wert mit allen anderen Werten)
Delphi-Quellcode:
for i := 0 to High(arr) do
for i2 := 0 to High(arr) do
if (i <> i2) and (arr[i] = arr[i2]) then Gleich;
oder schneller, da man bereits geprüfte Wertpaare leicht überspringen kann.
Delphi-Quellcode:
for i := 0 to High(arr) - 1 do
for i2 := i + 1 to High(arr) do
if arr[i] = arr[i2] then Gleich;
das ganze auf zweidimensional umgestellt
Delphi-Quellcode:
for x := 0 to High(arr) do
for y := 0 to High(arr[x]) do
for x2 := 0 to High(arr) do
for y2 := 0 to High(arr[x2]) do
if ((x <> x2) or (y <> y2)) and (arr[x, y] = arr[x2, y2]) then Gleich;
Wie man jetzt z.B. x und y eines zweidimensionalen Arrays zusammenrechnet und wieder zerlegt, hab ich ja vorhin schonmal genannt.
Somit kann man die "eindimensionalen" Schleifen verwenden und zerligt sich dann den Schleifenzähler wieder in zwei Schleifenwerte.
Ein Therapeut entspricht 1024 Gigapeut.