使用递归的方法求数组的最小值

//使用递归的话,就需要将问题进行分割,最后得到每个部分的最小值

 

public class MixReCursion {

        //主函数
       public int  getMin(int arr[],int pos,int n){
        int n1,n2,n3;

        //递归方法的出口,当只有一个值的时候就返回
        if(n==1){
             return  arr[pos];
        }
        else{

         //当分块的部分为偶数个时
         if(n%2==0){

             //获得前一部分的最小值
              n1 = getMin(arr,pos,n/2);

             //获得最后一部分的最小值
              n2 = getMin(arr,pos+n/2,n/2);
              if(n1>n2){
               return n2;
              }
              else{
               return n1;
              }
         }

        //分块部分为偶数个时
         else{
          n1 = getMin(arr,pos,n/2);
          n2 = getMin(arr,pos+n/2,n/2);
          n3 = getMin(arr,pos+n/2+1,n/2);
          if(n1<n2){
           if(n1<n3){
            return n1;
           }
           else{
            return n3;
           }
          }else{
           if(n2>n3){
            return n3;
           }
           else{
            return n2;
           }
          }
         }
        }
     
       }
      
       public static void main(String args[]){
        int a[] = new int[]{22,5,99,9,11,6,4};
        MixReCursion min =  new MixReCursion();
        System.out.println(min.getMin(a, 0, 7));
       }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值