这个问题其实很容易解决,就是循环遍历一遍数组,然后找到数组中存在的最大值和最小值就可以了,书中主要讨论的问题是比较次数较小的方法,不过,书中已经证明了,无论用什么方法最少的比较次数也就是循环遍历一遍的比较,结果是O(1.5N)的,所以,很容易的可以解决这个问题。
第一种方法:
函数声明:
void DutFindMaxAndMinInArray_1(int*, int, int&, int&);
源代码如下:
/*基本的解法寻找最大值和最小值*/
bool _DutFindMaxAndMinInArray = false;
void DutFindMaxAndMinInArray_1(int* A, int size, int& _max, int& _min)
{
if (!A || size <= 0)
{
_DutFindMaxAndMinInArray = true;
_max = -1;
_min = -1;
return;
}
if (size == 1)
{
_max = A[0];
_