算法数组中的最大值和最小值
方法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]
{
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
minV=minL;
else
minV=minR;
return maxV,minV;
}
扩展:
求N个数组中,第二大的数:分别求出前后N/2中的最大值,比较返回较小的那个
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29012686/viewspace-1142923/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29012686/viewspace-1142923/
本文介绍了四种不同的算法来寻找数组中的最大值和最小值:两次遍历法、分组比较法、双变量记录法及递归法,并给出了递归算法的具体实现。
2848

被折叠的 条评论
为什么被折叠?



