我知道有人已经问过这个问题,但是我仍然不太了解幕后发生的事情。问题是找到数组中的最小元素。
假设我有int [] a = {3,2,5,7};
我的理解方式是:
mid =(0 + 3)/ 2 = 1
然后min1 = min(a,0,中'1')
中=(0 + 1)/ 2 = 0
然后min1 = min(a,0,中间的'0')
所以现在条件满足了,然后返回a [0],即3。
这就是我现在在想的。而且我也看不到任何代码能在数组的每一半中找到最小的元素。
请向我清楚地解释。
谢谢
private static int min(int[] array, int start, int end){
// a 0 3
if(start == end){
return array[start];
}
int mid = (start+end)/2;
int min1 = min(array, start, mid);
int min2 = min(array, mid + 1, end);
return (min1 < min2) ? min1: min2;
}