2010-11-11 14 views
7

Mogę znaleźć medianę z 12 porównaniami. Ale chcę poznać minimalną liczbę porównań i jak to zrobić.Liczba porównań znajduje medianę 7 liczb

+0

Chciałbym zobaczyć twoje wdrożenie - nie mogę tego zrobić w mniej niż 18 operacjach. –

+0

Dla a, b, c, d, e, f, g, wypróbuj zerr

Odpowiedz

7

Donald Knuth ma rozdział "Wybór minimalnego porównania" w tomie III z Sztuka programowania komputerowego.

Knuth mówi: "żadna ogólna metoda [wyboru w minimalnej liczbie porównań] nie jest jeszcze widoczna", ale podaje pewne ogólne metody, które zbliżają się do minimum.

Patrząc na Tabelę 5.3.3-1, widzimy, że V₄ (7) = 10 (to znaczy, że można znaleźć 4. co do wielkości z 7 pozycji przy użyciu co najwyżej 10 porównań) i algorytmu ("znaleziono ręcznie metodą prób i błędów ") podano w rozwiązaniu, aby wykonać 5.3.3-10.

+1

Wygląda na to, że TAoCP jest konieczne. @ - @ – zerr

+0

@zerr, Bez wątpienia, Zawsze jest to konieczne –

1

Jeśli zezwalasz na porównywanie równolegle (nowoczesny procesor prawdopodobnie zrobi to za Ciebie), możesz użyć narzędzia sorting network, aby rozwiązać problem w sześciu krokach.

+0

Czy możesz podać odniesienie do implementacji 6 porównań? Dzięki –

+0

Oczywiście, proszę bardzo: tutaj: http://www.angelfire.com/blog/ronz/Articles/999SortingNetworksReferen.html – Rafe

+0

Widziałem ten artykuł, ale uważam, że nie można powiedzieć, że n = 7 można zrobić przy 6 porównaniach . –

Powiązane problemy