1、取双元素法
每次取两个元素,用较小的和最小值比较,用较大的和最大值比较,那么总共会取N/2次,每取一次会进行三次比较,第一次比较当前两个元素,第二次较小的和当前最小值比较,
第三次较大的和当前最大值比较,总的比较次数便是:3N/2。需要注意的是:
(1)输入数组的合法性检查(空指针或者数组的长度为0);
(2)边界检查:输入数组只有1个元素,那么最小值和最大值均为该元素;
(3)初始化最小值、最大值为第一个和第二个元素中的较小值和较大值,从第三个元素开始扫描,只要i < array.length则循环,不过要注意的是数组中的元素个数为奇数时,i最后会指向最后一个元素,即i = array.length - 1,这时就拿它去更新最小值和最大值,然后退出循环。
private static void MinAndMaxInArrayCore(int[] array) {
if(array == null || array.length == 0)
return;
int n = array.length;