我想設計一個算法,給定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票。 –