1,实验报告名称
7-1 maximum number in a unimodal array
2,问题描述
You are a given a unimodal array of n distinct elements, meaning that its entries are in increasing order up until its maximum element, after which its elements are in decreasing order. Give an algorithm to compute the maximum element that runs in O(log n) time.
3,算法描述
利用分而治中的递归算法找到其最大值,同时需要注意最大值处于最左端或者最右端有可能导致数组越界的情况
4,时间复杂度与空间复杂度
时间复杂度:采用了二分算法。
分解子问题:时间复杂度为O(1)
子问题:时间复杂度为O(n/2)
总时间复杂度为O(logn)
空间复杂度:空间复杂度为O(logn)
5,心得体会
单峰数组求最大值需要考虑峰在最左端或最右端,于是在循环中需要判断mid值是否已经到达了两端位置,若已经到达,则最大值即为左或右两端。
6,分治法的个人思考
分治法的思想把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并