回答
你肯定需要一些存儲空間至少有N/2個地方。這是沒有辦法的。
編輯完成後OP的COMENT:
獲取有關節目一些好的當然,ESP。數據結構。你不能依賴Stackoverflow來開發你的所有開發職業;-)。說了這麼多,讓我們給你一個起點:我想在這裏使用ArrayList:
int n = ...; // get N from the user;
List<Double> list = new ArrayList<Double>();
for (int i=0; i<n; i++) {
double element = ...; // get element from the user;
list.add(element);
}
// Have the Java library sort the list for you
Collections.sort(list);
// now pick/compute the median from the sorted list
// I'll leave that up to you..
是的,這不是一個合乎邏輯的問題,而是一個保存值的問題。我真的不明白。但我想解決它:) –
這是作弊。 :-)'ArrayList'當然在幕後使用了一個數組。 –
當然這是作弊。但是,如果不以任何一種方式欺騙,就無法解決問題。當然任何排序或排序的集合都可以完成這項工作--ArrayList只是派上用場...... –
我建議你用手程序的二進制樹。您可能需要允許重複項,以便在內置的TreeSet
中不會執行Java。也可能是你可以在網上的某處找到合適的樹實現。樹應該被排序。請參閱Binary search tree on Wikipedia獲取更多靈感。
您的主程序將逐個讀取您的數字並將它們插入到您的樹中。之後,如果N
是偶數,它將查詢樹的中間元素,或者兩個中間元素。你不需要任何數組來實現你的樹。爲了找到第i個元素,樹會執行遍歷計數遇到的元素並返回第i個元素。
快樂編碼。
無Array
,無List
或任何其他Collection
。
try (Scanner scanner = new Scanner(System.in)) {
System.out.print("Number of numbers: ");
int N = scanner.nextInt();
System.out.printf("Enter the %d numbers: ", N);
double median = IntStream.range(0, N)
.mapToDouble(i -> scanner.nextDouble())
.sorted()
.skip((N-1)/2)
.limit(2-N%2)
.average()
.getAsDouble();
System.out.printf("The median is %f%n", median);
}
(不注意的.sorted()
幕後那個人。)
我會確保忽略那個人。 ;-) –
我測試了一下,它適用於有效的輸入。很優雅的解決方案 –
- 1. 查找用戶給出的n值的中位數,不使用數組或任何使用數組或任何其他集合的函數
- 2. 迭代時是否使用數組列表或其他集合
- 3. 如何用UNNEST或任何其他函數平鋪數組?
- 4. 如何使用Colander表單中的列表或數組
- 5. 如何使用表中其他列的(重複)聚合函數值我使用
- 6. 如何使用@ConfigurationProperties進行列表值或數組值映射?
- 7. N數組或集合?
- 8. 如何使用列表集合檢索整數數組
- 9. 使用列表<>,數組或其他?
- 10. 不知道是否使用數組/列表/集合/或其他來存儲我的數據
- 11. 如何在Scala中創建大數組的數組或列表
- 12. 如何查找數組中是否有任何值合計n
- 13. 如何使用Python計算集合或列表中的倍數數目?
- 14. 如何使用數組列表FileOutputStream中
- 15. 查找值列表的最小值和最大值,無需排序或使用任何內置函數或庫
- 16. 如何查找不在其他陣列中的數組項目
- 17. 按多列分組但不使用聚合函數或使用cfoutput/cfloop的組?
- 18. LINQ:使用查找或在數據庫列表上的位置
- 19. 從一些其他數組列表的列表中填充數組列表。
- 20. 如何使用SqlDataSource的填充組合框以及數據表或數據集
- 21. 如何用其他動態數組或值混合填充動態數組?
- 22. 如何將聚合函數應用於表(或數據集)行的組?
- 23. 如何用數組值列表檢查數組?
- 24. 斯卡拉:扁平化的混合集合的集合(或列表或數組)
- 25. 如何在matlab中使用isempty函數或其他函數?
- 26. 如何在數組或mySQL表中查找缺少的數據?
- 27. 不能使用數組或列表中的對象
- 28. c:foreach使用列表:必須評估爲集合,地圖,數組或空值
- 29. 列表或數組的方法參數?
- 30. 計數的數組或列表
如果用戶輸入 'N' 第一,你可以前N/2忽略每一個輸入或者(N/2)+1 –
(虛擬嘗試顯示你努力解決問題也是受歡迎的...) –
@LeventeSzabó只有當數字排序 –