【数据结构】-递归求出最大值

使用递归求最大值 

* 递归排序:能用递归解决的问题都可以使用非递归来完成。
 * 时间复杂度: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));
	}

}

猜你喜欢

转载自blog.csdn.net/lxiansheng001/article/details/88601273