分治法求数组中最大元素
原创
在数组A[n]中,设m是其中最大元素,则m=max(A[0],max( A[1]……A[n-1]);
同理 max( A[1]……A[n-1] ) = max ( A[1] , max( A[2]……A[n-1] );
设函数findMax( int index ) 是寻找数组中最大元素的一个方法,根据上面的原理,可以这样分治:
public int findMax(int index){ if(index<data.length-1){ return Math.max(data[index], findMax(index+1)); } return data[index]; }
完整代码:
class ffind{ private int data[]; public ffind(int num){ data=new int[num]; for(int i=0;i<data.length;i++){ data[i]=(int)(Math.random()*100); System.out.print(data[i]+" "); } System.out.println(); } public int Max(int index){ if(index<data.length-1){ return Math.max(data[index], Max(index+1)); } return data[index]; } } public class finMax { public static void main(String args[]){ ffind x=new ffind(10); System.out.println(x.Max(0)); } }
10:23:20
2018-11-09