import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.StdRandom;
public class E1_4_17 {
public static void main(String[]args){
//测试是否正确
double[]a={2.0,5.0,-8,5,6,9,11,0};
double[]pair=farthestPair(a);
StdOut.println(pair[0]+"\t"+pair[1]);
//Doubling Ratio test
int N=125;
double prev=timeTrial(N);
for (N=250;true;N+=N){
double now=timeTrial(N);
StdOut.printf("N=%9d time=%7.1f ratio=%6.1f\n",N,now,now/prev);
prev=now;
}
}
public static double timeTrial(int N){
double MAX=1000000.0;
double[]a=new double[N];
for (int i=0;i<N;i++)
a[i]= StdRandom.uniform(-MAX,MAX);
StopWatch time=new StopWatch();
double[]pair=farthestPair(a);
return time.elapsedTime();
}
public static double[] farthestPair(double[]a){
//遍历,同时找最大值,最小值
double maxmium=Double.MIN_VALUE;
double minmium=Double.MAX_VALUE;
double[]pair=new double[2];
for (int i=0;i<a.length;i++){
if (a[i]>maxmium) {
maxmium = a[i];
pair[1] = a[i];
}
if (a[i]<minmium){
minmium=a[i];
pair[0]=a[i];
}
}
return pair;
}
}