Find Max and Min
Find Max and Min
We can simply iterate through the array and compare twice to each element to get min and
max. This leads to 2n comparisons.
//sudo code
max = A[0], min = A[0]
for each i in A
if A[i]>max then max = A[i]
if A[i]<min then min = A[i]
public static void minmax0(int[] a) {
if (a == null || a.length < 1)
return;
int min = a[0];
int max = a[0];
for (int i = 1; i <= a.length - 1; i++) {
if (max < a[i]) {
max = a[i];
}
if (min > a[i]) {
min = a[i];
}
}
}
# of comparisons: 2(n-1).
Apparently, we should do better than this.
Better Solution 1
public static void minmax1(int[] a) {
if (a == null || a.length < 1)
return;
int min, max;
// if only one element
if (a.length == 1) {
max = a[0];
min = a[0];
System.out.println("min: " + min + "\nmax: " + max);
return;
}
if (a[0] > a[1]) {
max = a[0];
min = a[1];
} else {
max = a[1];
min = a[0];
}
i = i + 2;
if (a.length % 2 == 1) {
min = Math.min(min, a[a.length - 1]);
max = Math.max(max, a[a.length - 1]);
}
}
return result;
}
}