算法数组中的最大值和最小值
方法1:遍历两次求出最大值最小值 ,时间复杂度N*2
方法2:相邻两个数分为一组比较,大的放在偶数位,小的放到奇数位,然后在偶数位上找到最大值,在奇数位上找到最小值N*1.5
方法3:定义两个变量Max,Min值,相邻两个数分为一组,比较出最大值和最小值,最大值和Max比较,是否大于Max,如果大于赋值于Max,最小值和Min比较,是否小于Min,如果小于赋值于Min
方法4:递归方法,分别求出前后N/2个数的Min和Max
代码:
(Max,Min)Search(arr, b, e)
{
If(e-b<=1)
{
If(arr[b]<arr[e])
{
Return arr[e], arr[b];
}
Else
{
Return arr[b], arr[e];
}
}
MaxL,MinL=Search(arr,b,b+(e-b)/2);
MaxR,MinR=Search(arr,b+(e-b)/2,e);
If(MaxL>MaxR)
maxV=maxL;
else
maxV=maxR;
if(minL<minR)
minV=minL;
else
minV=minR;
return maxV,minV;
}
扩展:
求N个数组中,第二大的数:分别求出前后N/2中的最大值,比较返回较小的那个