2010-11-11 48 views
7

我可以通過12次比較找到中位數。但我想知道最少的比較數量以及如何去做。尋找7位數字中位數的比較數

+0

我想看看你的實現 - 我似乎無法做到少於18個操作。 – 2010-11-11 12:23:09

+0

對於a,b,c,d,e,f,g,嘗試a zerr 2010-11-11 12:45:44

回答

7

Donald Knuth在第三卷「計算機程序設計藝術」的「最小比較選擇」中有一章。

克努特說:「[選擇在比較中的最小號]沒有通用的方法是尚未明顯」,但他給出了接近最低的一般方法。我們可以看到V 4(7)= 10(也就是說,你可以使用至多10次比較找到7項中的第4大項),算法(「手工找到通過試驗和錯誤「)在練習5.3.3-10的解決方案中給出。

+1

看來TAoCP是必要的。 @ - @ – zerr 2010-11-11 12:53:43

+0

@zerr,毫無疑問,它始終是必需的 – 2017-11-29 14:58:40

1

如果允許並行比較(現代CPU可能會爲你做這個),你可以使用一個sorting network解決的六個步驟的問題。

+0

您能否提供6個比較實施的參考?謝謝 – 2018-02-07 05:58:00

+0

當然,在這裏你去:http://www.angelfire.com/blog/ronz/Articles/999SortingNetworksReferen.html – Rafe 2018-02-07 23:28:12

+0

我看到那篇文章,但我認爲它不能說,n = 7可以完成6個比較。 – 2018-02-07 23:30:38