首页 > 其他 > 详细

algorithm@ O(3/2 n) time to findmaximum and minimum in a array

时间:2016-02-07 09:42:04      阅读:182      评论:0      收藏:0      [点我收藏+]
    public static int[] max_min(int[] a){
        //res[0] records the minimum value while res[1] records the maximal one.
        int res[] = new int[2];
        int n = a.length;
        if(n == 0)  {
            return res;
        }
        if(n == 1) {
            res[0] = res[1] = a[0];
        }
        
        int min, max;
        if(n%2 == 1) {
            res[0] = res[1] = a[0];
            
            for(int i=1; i<=n-2; i+=2) {
                if(a[i] < a[i+1]) {
                    min = a[i];
                    max = a[i+1];
                }
                else {
                    min = a[i+1];
                    max = a[i];
                }
                res[0] = Math.min(min, res[0]);
                res[1] = Math.max(max, res[1]);
            }
        }
        else {
            res[0] = Math.min(a[0], a[1]);
            res[1] = Math.max(a[0], a[1]);
            for(int i=2; i<=n-2; i+=2) {
                if(a[i] < a[i+1]) {
                    min = a[i];
                    max = a[i+1];
                }
                else {
                    min = a[i+1];
                    max = a[i];
                }
                res[0] = Math.min(min, res[0]);
                res[1] = Math.max(max, res[1]);
            }
        }
        
        return res;
    }

 

algorithm@ O(3/2 n) time to findmaximum and minimum in a array

原文:http://www.cnblogs.com/fu11211129/p/5184550.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!