1. 程式人生 > >使用分治思想 求數組中的最大和最小值

使用分治思想 求數組中的最大和最小值

turn 使用 public 測試 具體實現 span int nbsp 下標

代碼具體實現如下:

package com.zuoyan.algorithm;

public class FindMinMax {
    
    
    //Main函數進行測試
    public static void main(String[] args) {
        int[] a=new int[]{1,10,2,19,365,-2,100,28};
        MinMax minMax = getMinMax(a, 0,a.length-1);
        System.out.println("最小值:"+minMax.getMin());
        System.out.println(
"最大值:"+minMax.getMax()); } public static MinMax getMinMax(int [] array,int start,int end){ //分治的終止條件 如果 兩個坐標相鄰 或者是同一個坐標,返回最小的值和最大的值 if(end-start<=1){ if(array[start]>array[end]){ return new MinMax(array[end],array[start]); }
else { return new MinMax(array[start], array[end]); } } else{ //如果開始下標和終止下標沒有到達終止下標,求出中間坐標 int mid = (start+end)/2; MinMax left = getMinMax(array, start, mid); MinMax right = getMinMax(array, mid+1, end);
int max = 0,min = 0; min = left.getMin()<right.getMin()?left.getMin():right.getMin(); max = left.getMax()>right.getMax()?left.getMax():right.getMax(); //返回查找的最大最小 return new MinMax(min, max); } } } class MinMax { private int max; private int min; public MinMax(int min, int max) { super(); this.max = max; this.min = min; } public int getMax() { return max; } public void setMax(int max) { this.max = max; } public int getMin() { return min; } public void setMin(int min) { this.min = min; } }

使用分治思想 求數組中的最大和最小值