我想设计一个算法,给定n个元素的列表,找到3n/2比较中的最小值和最大值。如何做到这一点的任何提示?使用3n/2比较找出最大和最小元素?
回答
作为一个提示,想象一下所有阵列元素都是淘汰赛中的球员。将所有球员配对,让“赢家”(更大的数字)晋级一场比赛,而“输家”(较小的数字)则落入输家的支架。您现在将有n/2个获胜者考虑,最大值必须是其中的一个,并考虑n/2个失败者,最小值必须是其中之一。在这样做的过程中,你做了n/2次比较。你能用余下的n个比较来找出一组的最小值和另一组的最大值?
难道你不能在这个过程中找到最小和最大值? – ChiefTwoPencils
@ChiefTwoPencils是的。我有点希望OP能做些工作来弄清楚如何。 :-) – templatetypedef
Upvoted,但是根据n是偶数还是奇数,你必须小心计数。我认为当n是偶数时可以得到3n/2 - 2的比较结果,当n是奇数的时候可以得到(3n-3)/ 2的比较结果。 –
@templatetypedef的提示是正确的:
public static void findMinimumAndMaximumOf(int[] numbers) { assert numbers.length >= 2; List<Integer> bigList = new ArrayList<>(numbers.length/2); List<Integer> smallerList = new ArrayList<>(numbers.length/2); int i = 1; for (; i < numbers.length; i = i + 2) { if (numbers[i] > numbers[i - 1]) { bigList.add(numbers[i]); smallerList.add(numbers[i - 1]); } else { bigList.add(numbers[i - 1]); smallerList.add(numbers[i]); } } if ((numbers.length & 1) == 1) { if (numbers[numbers.length - 1] > numbers[numbers.length - 2]) { bigList.add(numbers[numbers.length - 1]); } else { smallerList.add(numbers[numbers.length - 1]); } } Iterator<Integer> iBig = bigList.iterator(); int biggest = iBig.next(); while (iBig.hasNext()) { int current = iBig.next(); if (current > biggest) { biggest = current; } } Iterator<Integer> iSmall = smallerList.iterator(); int smallest = iSmall.next(); while (iSmall.hasNext()) { int current = iSmall.next(); if (current < smallest) { smallest = current; } } System.out.println(String.format("Max:%d, Min:%d" ,biggest,smallest)); }
- 1. 找出最大的不及组,以最小的比较
- 2. 找到最小和最大像素值
- 3. 比较数组中的元素,找到元素的最大总和
- 4. 查找具有最大和最小元素数的数组
- 5. 如何查找数组的最小和最大元素?
- 6. 如何从队列中找到最小和最大元素?
- 7. 查找最大和其他行中,最大比较
- 8. 寻找最小和最大
- 9. 找到最大的小元素
- 10. 使用分治法找出最大和最小值
- 11. 使用最小元素比较对5个元素进行排序
- 12. 比较set_intersection(公共元素)的大小和方向使用?
- 13. Ruby最小和最大比较字符串的方法?
- 14. 比较R中的组中的最大值和最小值
- 15. 是比较有效的最小值和最大值
- 16. 2D阵列的最小/最大元素
- 17. JavaScript不比较大于最大数值的最小值
- 18. 如何查找列表中最大/最小元素的索引?
- 19. 在arraylist元素中查找最大/最小值条目
- 20. 如何找到链接列表的最大/最小元素
- 21. 在Haskell中查找大元素的最小元素索引
- 22. 按比较排序的最小比较
- 23. 如何从最小 - 最大堆中删除最大元素?
- 24. 查找总和小于给定值的最大元素(连续)?
- 25. numpy矩阵的最大元素/大小?
- 26. 查找最小和最大日期SQL
- 27. 查找最大,最小和中间值
- 28. C查找最大值和最小值?
- 29. 查找最大值和最小值
- 30. 查找最小值和最大值
“太多可能的答案”?你可以列出多少个可能的答案?我想知道。如果你不能,请你收回你的-3票。 –