使用递归求最大值
* 递归排序:能用递归解决的问题都可以使用非递归来完成。
* 时间复杂度:T(N) = a*T(N/b) + O(N^d)
* 1) log(b,a) > d --> 复杂度为O(N^log(b,a))
* 2) log(b,a) = d --> 复杂度为O(N^d * logN)
* 3) log(b,a) < d --> 复杂度为O(N^d)
* 在本题中,将N样本量分成两部分,执行两次因此a=2;b=2;除此之外还有一个比较操作,常数等级O(N^0)=O(1)
所以最终时间复杂度为O(N^log(2,2))=O(n)
* @author super_LI
public class RecursiveSort {
public static int recursiveSort(int[] arr,int start,int end){
// 如果递归最后只有一个,那么此方法返回此数,弹出死亡
if(start==end){
return arr[start];
}
int mid=(start+end)/2;
// 每次分成两个部分,调用自己的方法 ,压栈执行;
int maxLeftValue=recursiveSort(arr,start,mid);
int maxRightValue=recursiveSort(arr,mid+1,end);
return maxLeftValue>maxRightValue?maxLeftValue:maxRightValue;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {1,3,5,7,9,2,4,6,8};
System.out.println(recursiveSort(arr,0,arr.length-1));
}
}