天天看點

求數組的最大值最小值

算法數組中的最大值和最小值

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