同時求數列的最大值與最小值

package agrisom;
/**
 * 同時求最大值與最小值
 */
public class FindMaxAndMin {
    public void findMaxAndMin(int [] array){
        int length=array.length;
        int max,min;
        if(length==0){
            System.out.println("array empty");
            System.exit(1);
        }else if(length==1){
            max=min=array[0];
        }else if(length==2){
            max=array[0]>array[1] ? array[0] : array[1];
            min=array[0]>array[1] ? array[1] : array[0];
        }
        
        int i;
        if((length & 1)==1){ //數組長度爲奇數
            max=min=array[0];
            i=1;
        }else{               //數組長度爲偶數
            max=array[0]>array[1] ? array[0] : array[1];
            min=array[0]>array[1] ? array[1] : array[0];
            i=2;
        }
        
        for(;i<length;i+=2){
            if(array[i] > array[i+1]){
                max=max<array[i] ? array[i] : max;
                min=min>array[i+1] ? array[i+1] : min;
            }else{
                max=max<array[i+1] ? array[i+1] : max;
                min=min>array[i] ? array[i] : min;
            }
        }
        
        System.out.println("max: "+max);
        System.out.println("min: "+min);
    }
    
    public static void main(String [] args){
        FindMaxAndMin fmm=new FindMaxAndMin();
        fmm.findMaxAndMin(new int []{4,3,6,9,1,56,22});
        fmm.findMaxAndMin(new int []{4,3,6,9,1,56});
        fmm.findMaxAndMin(new int []{4,3});
        fmm.findMaxAndMin(new int []{2});
        fmm.findMaxAndMin(new int []{});
    }
}
/**
運行結果:
max: 56
min: 1
max: 56
min: 1
max: 4
min: 3
max: 2
min: 2
array empty
*/


發佈了39 篇原創文章 · 獲贊 3 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章