问题描述
老板有一袋金块(共n块,n是2的幂(n>=2)),最优秀的雇员得到其中最重要的一块,最差的雇员得到其中最轻的一块。假设有一台比较重量的仪器,希望用最少的比较次数找出最重和最轻的金块。
方法1:穷举法
思路就是将所有金块质量存放到一个数组中,起始将数组第一个元素同时设置为max,min,通过循环遍历数组,迭代出最大值和最小值
代码实现:
package algorithm;
import java.util.Random;
//使用穷举法实现分金块问题
public class GoldProblem {
public static void main(String[] args) {
int[] arr = new int[10];
Random random = new Random();
System.out.println("所有金块的重量为:");
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(9)+1;
System.out.print(arr[i]+"\t");
}
System.out.println();
int max = arr[0];
int min = arr[0];
for (int i = 0; i < arr.length; i++) {
if(arr[i] >= max){
max =