//  Data Structures with Java by John R. Hubbard
//  Copyright McGraw-Hill, 2001
//  Problem 4.5 on page 88

public class Pr0405
{ public static void main(String[] args)
  { double[] a = { 1.1, 4.4, 3.3, 8.8, 2.2, 5.5, 6.6 };
    System.out.println("max(a,0,6) = " + max(a,0,6));
  }
  
  public static double max(double[] a, int lo, int hi)
  { // returns the maximum value among a[lo..hi]
    if (lo>=hi) return a[lo];
    int mid=(lo+hi)/2;
    double m1=max(a,lo,mid);
    double m2=max(a,mid+1,hi);
    return (m1>m2?m1:m2);
  }
}
