编程之美2.10寻找数组中的最大值和最小值Java版

来源:互联网 发布:apache运行php文件 编辑:程序博客网 时间:2024/05/17 09:16
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */package Test;/** * * @author 2.10寻找数组中的最大值和最小值 */public class SearchArrayMaxMin {    public static void main(String[] args) {        int[] arry = new int[]{5,6,8,3,7,9};        //解法一 分别寻找最大值和最小值        int[] num1 = searchArrayMaxMin1(arry);        System.out.println("min:"+num1[0]+"max:"+num1[1]);                //解法四  分治策略        int[] num4 = searchArrayMaxMin(arry,0,arry.length-1);        System.out.println("min:"+num4[0]+"max:"+num4[1]);    }    private static int[] searchArrayMaxMin1(int[] arry) {       int[] result = new int[2];       int min = arry[0];       int max = arry[0];       for(int i =1;i<arry.length;i++){           if(arry[i]<min)               min =arry[i];           else               max =arry[i];       }       result[0]= min;       result[1]=max;       return result;    }    private static int[] searchArrayMaxMin(int[] arry, int begin, int end) {        int[] result = new int[2];        if(end-begin <=1){            if(arry[begin]<arry[end]){                result[0]=arry[begin];                result[1]= arry[end];                return result;            }else{                result[0] = arry[end];                result[1] = arry[begin];                return result;            }        }        int mid = (begin+end)/2;        int[] result_left = searchArrayMaxMin(arry,begin,mid);        int[] result_right =searchArrayMaxMin(arry,mid+1,end);        if(result_left[0]<result_right[0])            result[0]= result_left[0];        else            result[0]=result_right[0];        if(result_left[1]>result_right[1])            result[1]= result_left[1];        else            result[1]=result_right[1];        return result;    }}

0 0
原创粉丝点击