CSC300: Loop invariant [12/21] |
01 |
package algs11; import stdlib.*; public class PlaygroundMax { public static double max (double[] a) { double m = a[0]; for (int i = 1; i < a.length; i++) { /* m == max(a[0]...a[i-1]) */ if (m < a[i]) { m = a[i]; } } /* m == max(a[0]...a[a.length-1]) */ return m; } public static void testMax (double expected, double[] a) { double actual = max (a); if (expected != actual) { StdOut.format ("max failed: Expecting [%d] Actual [%d] with argument %s\n", expected, actual, java.util.Arrays.toString(a)); } } public static void main (String[] args) { testMax(31, new double[] { 11, 21, 31 }); testMax(31, new double[] { 11, 31, 21 }); testMax(31, new double[] { 31, 11, 21 }); testMax(21, new double[] { 21, 11 }); testMax(21, new double[] { 11, 21 }); testMax(11, new double[] { 11 }); StdOut.println ("Finished tests"); } } |
A loop invariant is something that is true every time, before executing the body of the loop
What about the empty array?