<p>老板有一袋金块(共n块,n是2的幂(n≥2)),最优秀的雇员得到其中最重的一块,最差的雇员得到其中最轻的一块。假设有一台比较重量的仪器,希望用最少的比较次数找出最重和最轻的金块。并对自己的程序进行复杂性分析。</p>
public class MaxMinGold {
public void search_Max_Min(int gold [],int a[],int left,int right){
int [] l = new int[2];
int [] r = new int[2];
if(left == right){
a[0] = a[1] = gold[left];
}
if(right -left ==1){
if(gold[left] > gold[right]){
a[0] = gold[right];
a[1] = gold[left];
}else{
a[0] = gold[left];
a[1] = gold[right];
}
}
if(right - left > 1){
int mid = (left + right)/2;
search_Max_Min(gold,l, left, mid);
search_Max_Min(gold,r, mid, right);