// various (non-destructive) functions on arrays public class Exercise6a { // returns position of maximum element of a public static int maximumP(int[] a) { int m = 0; int n = a.length; for (int i = 1; i < n; i++) { if (a[m] < a[i]) m = i; } return m; } // returns maximum element of a public static int maximumE(int[] a) { int m = a[0]; int n = a.length; for (int i = 1; i < n; i++) { if (m < a[i]) m = a[i]; } return m; } // returns subarray of a starting at p and having length n public static int[] subarray(int[] a, int p, int n) { int[] b = new int[n]; for (int i = 0; i < n; i++) b[i] = a[i+p]; return b; } // returns true if b occurs as subarray in a at position b public boolean match(int[] a, int[] b, int p) { int n = b.length; for (int i = 0; i < n; i++) { if (a[i+p] != b[i]) return false; } return true; } // returns smallest position at which b occurs as subarray in a // (-1, if no such position exists) public int match(int[] a, int b[]) { int m = a.length; int n = b.length; for (int i = 0; i < n-m+1; i++) { if (match(a, b, i)) return i; } return -1; } }