算法數組中的最大值和最小值
方法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中的最大值,比較傳回較小的那個