演算法求陣列中的最大值最小值

dongyu2013發表於2014-04-16

演算法陣列中的最大值和最小值

方法1:遍歷兩次求出最大值最小值 ,時間複雜度N*2

方法2:相鄰兩個數分為一組比較,大的放在偶數位,小的放到奇數位,然後在偶數位上找到最大值,在奇數位上找到最小值N*1.5

方法3:定義兩個變數MaxMin值,相鄰兩個數分為一組,比較出最大值和最小值,最大值和Max比較,是否大於Max,如果大於賦值於Max,最小值和Min比較,是否小於Min,如果小於賦值於Min

方法4:遞迴方法,分別求出前後N/2個數的MinMax

程式:

MaxMinSearch(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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章