bekam ich einen Pseudo-Code:Was macht dieser Algorithmus?
Input: Array A with n (= length) >= 2
Output: x
x = 0;
for i = 1 to n do
for j = i+1 to n do
if x < |A[i] - A[j]| then
x = |A[i] - A[j]|;
end if
end for
end for
return x;
Ich habe umgewandelt, das zu einem echten Code besser zu sehen, was es tut:
public class Test
{
public static void main (String[] args)
{
int A[] = {1,2,3,4,5,6,7,8,9};
int x = 0;
for (int i = 1; i < A.length; i++)
{
for (int j = i + 1; j < A.length; j++)
{
if (x < Math.abs(A[i] - A[j]))
{
x = Math.abs(A[i] - A[j]);
}
}
}
System.out.println(x);
}
}
Der Ausgang war 7 mit dem Array im Code. Ich habe ein anderes Array (1 bis 20) verwendet und die Putput war 18. Array 1-30, die Ausgabe war 28. Das Muster scheint klar, der Algorithmus gibt Ihnen die vorletzte/dritte von letzten Array-Wert. Oder liege ich falsch?
Haben Sie versucht, Ihre Hypothese mit verschiedenen Eingaben, z. '[5,5,5,5]'? –
Der Pseudocode beginnt oft mit der Schleife "1", aber was wirklich gemeint ist, ist der erste Punkt. Also starte deine Schleife bei '0' – user
Warum wird ich initialisiert, um 1 zu sein? Dies macht das erste Element Ihres Arrays unbedeutend. – LaneL