package arrayutility;

public class ArrayUtility {
  // outputs array
  public static void printForwards(int[] a) {
    for (int i = 0; i < a.length; i++) {
      System.out.print(a[i] + " ");
    }
    System.out.println();
  }

  // outputs array in reverse order
  public static void printBackwards(int[] a) {
    for (int i = a.length - 1; i >= 0; i--) {
      System.out.print(a[i] + " ");
    }
    System.out.println();
  }

  // returns sum of array values
  public static int getSum(int[] a) {
    int sum = 0;
    for (int i = 0; i < a.length; i++) {
      sum += a[i];
    }
    return sum;
  }

  // returns average of array values
  public static double getAverage(int[] a) {
    if (a.length == 0) {
      return 0;
    }
    return (double) getSum(a) / a.length;
  }

  // returns maximum value in array
  public static int getMax(int[] a) {
    if (a.length == 0) {
      return Integer.MIN_VALUE;
    }
    int max = a[0];
    for (int i = 1; i < a.length; i++) {
      max = Math.max(max, a[i]);
    }
    return max;
  }

  // returns minimum value in array
  public static int getMin(int[] a) {
    if (a.length == 0) {
      return Integer.MAX_VALUE;
    }
    int min = a[0];
    for (int i = 1; i < a.length; i++) {
      min = Math.min(min, a[i]);
    }
    return min;
  }

  //returns new array with elements reversed
  public static int[] reverse(int[] a) {
    int[] b = new int[a.length];
    int j = a.length - 1;
    for (int i = 0; i < a.length; i++) {
      b[j] = a[i];
      j--;
    }
    return b;
  }

  //returns new array with same elements and order
  public static int[] clone(int[] a) {
    int[] b = new int[a.length];
    for (int i = 0; i < a.length; i++) {
      b[i] = a[i];
    }
    return b;
  }

  // returns index of target in array
  // or -1 if not there
  public static int find(int[] a, int x) {
    for (int i = 0; i < a.length; i++) {
      if (x == a[i]) return i;
    }
    return -1;
  }

  /*
   public static int [] clone(int [] array); // returns a new array with copy of array
   */
}
