我可以通過12次比較找到中位數。但我想知道最少的比較數量以及如何去做。尋找7位數字中位數的比較數
回答
Donald Knuth在第三卷「計算機程序設計藝術」的「最小比較選擇」中有一章。
克努特說:「[選擇在比較中的最小號]沒有通用的方法是尚未明顯」,但他給出了接近最低的一般方法。我們可以看到V 4(7)= 10(也就是說,你可以使用至多10次比較找到7項中的第4大項),算法(「手工找到通過試驗和錯誤「)在練習5.3.3-10的解決方案中給出。
看來TAoCP是必要的。 @ - @ – zerr 2010-11-11 12:53:43
@zerr,毫無疑問,它始終是必需的 – 2017-11-29 14:58:40
如果允許並行比較(現代CPU可能會爲你做這個),你可以使用一個sorting network解決的六個步驟的問題。
您能否提供6個比較實施的參考?謝謝 – 2018-02-07 05:58:00
當然,在這裏你去:http://www.angelfire.com/blog/ronz/Articles/999SortingNetworksReferen.html – Rafe 2018-02-07 23:28:12
我看到那篇文章,但我認爲它不能說,n = 7可以完成6個比較。 – 2018-02-07 23:30:38
- 1. 大數位按位比較
- 2. 尋找流動中位數
- 3. 比較一個數字的第三位
- 4. 比較次數中位數quicksort
- 5. 尋找位數在LONG_LONG_MAX
- 6. 尋找座位圖數據
- 7. 比較復位計數器
- 8. 尋找B +樹的中位數
- 9. PostgreSQL中的數組位置比較
- 10. 比較python的中位數和總和
- 11. 64位整數中的比較
- 12. 將64位整數中的每一位比較爲一個32位整數
- 13. AS3位圖數據百分比比較
- 14. 尋找一個浮點數的數組的中位數
- 15. R整數比較似乎忽略了數字位數
- 16. 查找比數組給定數字的比較大的數字
- 17. 查找LinkedList中數字的中位數
- 18. 如何顯示7位數的數字?
- 19. Csvwrite的數字大於7位數
- 20. 計數兩個數中的位數並比較[C]
- 21. 如何比較兩位小數到小數點後10位?
- 22. 正則表達式只有7位數字和9位數字
- 23. 找到六位數的迴文數字。適用於四位和五位數字
- 24. PHP 5至7遷移 - 數字比較
- 25. 尋找數字
- 26. 如何比較雙精度5位數?
- 27. 比較職位之前數量與新
- 28. 實證位數比較效果大小
- 29. 版本比較器3位小數
- 30. 在Oracle中選擇7位數字
我想看看你的實現 - 我似乎無法做到少於18個操作。 – 2010-11-11 12:23:09
對於a,b,c,d,e,f,g,嘗試a zerr 2010-11-11 12:45:44