算法设计分析——最大元、最小元(分治法)

算法思想:

  1. 分解:将数组尽量均等分割
  2. 解决:当n=1时,该数即为最大元、也是最小元
  3. 找出元素即可,无需合并。

算法代码(java实现):

import java.util.Arrays;

public class MaxnumMinnum {
    
    public static void searchMaxMin(int[]arr,int mm[],int low,int high){
         if (high==low){
            mm[0]=arr[low];
            mm[1]=arr[low];
        } //此为递归出口
        else {
            int mid = (high - low) / 2 + low;
            int mml[]=new int[2];
            int mmr[]=new int[2];

            searchMaxMin(arr,mml,low, mid);
            searchMaxMin(arr,mmr,mid + 1, high);

            mm[0]=getMax (mml[0],mmr[0] );
            mm[1]=getMin (mml[1],mmr[1] );
        }

    }

    public static int  getMax (  int a,int b ){
        if (a>b)
             return a;
        else
             return b;
    }

    public static int  getMin (  int a,int b ){
        if (a>b)
            return b;
        else
            return a;
    }


    public static void main(String[] args){
        int array[]=new int[]{8,2,2,4,5,7,9};
        int n=array.length-1;
        System.out.println(Arrays.toString(array));

        int mm[]=new int[2];//第一个放大的,第二个放小的
         searchMaxMin (array, mm,0,n);
        System.out.println("max="+mm[0]);
        System.out.println("max="+mm[1]);
    }
}```

猜你喜欢

转载自blog.csdn.net/karin_0/article/details/83386784