老板有一袋金块(共n块,n是2的幂(n≥2)),最优秀的雇员得到其中最重的一块,最差的雇员得到其中最轻的一块。假设有一台比较重量的仪器,希望用最少的比较次数找出最重和最轻的金块。用java解答
时间: 2023-05-28 14:02:45 浏览: 225
一道java题
思路:
设原来这些金块的重量从大到小依次为a1,a2,a3,...,an,需要找出其中最重的和最轻的。
首先比较a1和a2,较重的记作max1,较轻的记作min1。
然后将max1与a3比较,较重的记作max2。
将min1与an比较,较轻的记作min2。
然后将max2和min2比较即可得到最重和最轻的金块。
代码实现:
public class GoldMining {
public static void main(String[] args) {
int[] golds = {8, 7, 6, 5, 4, 3, 2, 1}; //假设有8块金块
int max1 = golds[0], min1 = golds[1]; //初始值为第一块和第二块
for (int i = 2; i < golds.length; i++) {
//比较当前金块和max1
if (golds[i] > max1) {
max1 = golds[i];
} else {
//比较当前金块和min1
if (golds[i] < min1) {
min1 = golds[i];
}
}
}
int max2 = golds[2]; //假设第三块金块为max2
int min2 = golds[golds.length - 1]; //假设最后一块金块为min2
for (int i = 3; i < golds.length - 1; i++) {
//比较当前金块和max2
if (golds[i] > max2) {
max2 = golds[i];
} else {
//比较当前金块和min2
if (golds[i] < min2) {
min2 = golds[i];
}
}
}
System.out.println("最重的金块为:" + max1);
System.out.println("最轻的金块为:" + min1);
}
}
阅读全文