public class AnimateBars
{
   public static boolean less(double[] a, int i, int j)
   {
       int N = a.length;
       StdDraw.setPenColor(StdDraw.DARK_GRAY);
       StdDraw.line(i, 0, i, a[i]*N);
       StdDraw.line(j, 0, j, a[j]*N);
       return (a[i] < a[j]);
   }
   public static boolean lesseq(double[] a, int i, int j)
   {
       int N = a.length;
       StdDraw.setPenColor(StdDraw.BLACK);
       StdDraw.line(i, 0, i, a[i]*N);
       StdDraw.line(j, 0, j, a[j]*N);
       return (a[i] <= a[j]);
   }
   public static void exch(double[] a, int i, int j)
   {
       int N = a.length;
       StdDraw.setPenColor(StdDraw.WHITE);
       StdDraw.line(i, 0, i, a[i]*N);
       StdDraw.line(j, 0, j, a[j]*N);
       double swap = a[i];
       a[i] = a[j];
       a[j] = swap;
       StdDraw.setPenColor(StdDraw.BLACK);
       StdDraw.line(i, 0, i, a[i]*N);
       StdDraw.line(j, 0, j, a[j]*N);
   }
   public static boolean isSorted(double[] a)
   {
      for (int i = 1; i < a.length; i++)
         if (less(a, i, i-1)) return false;
     return true;
   }
   public static void initialize(double[] a) 
   {
      int N = a.length;
      StdDraw.setXscale(-1, N);
      StdDraw.setYscale(-1, N);
      StdDraw.setPenColor(StdDraw.LIGHT_GRAY);
      StdDraw.filledSquare(N/2 - .5, N/2 , N/2 + 1);
      StdDraw.setPenColor(StdDraw.BLACK);
      StdDraw.setPenRadius(.005);
      for (int i = 0; i < N; i++)
      {
         StdDraw.line(i, 0, i, a[i]*N);
      }
   }
}

