Рішення неправильне. Демут [1; через 2, сек. 5.3.1] показано, що п'ять значень можна сортувати, використовуючи лише сім порівнянь, тобто нижня межа "теоретичної інформації" в цьому випадку є тісною.
Відповідь - це метод, пристосований до , а не загальний алгоритм. Це теж не дуже приємно. Це контур:n=5
Сортуйте перші дві пари.
Замовте пари wrt їх відповідний більший елемент.
Назвіть результат ; ми знаємо a < b < d і c < d .[a,b,c,d,e]a<b<dc<d
Вставте в [ a , b , d ] .e[a,b,d]
Вставте в результат кроку 3.c
Перший крок чітко займає два порівняння, другий лише один. Останні два кроки проводять два порівняння; ми вставляємо в триелементний список в обох випадках (на кроці 4. зауважимо, що з ми знаємо, що c менший, ніж останній елемент списку, що знаходиться в руці) і порівнюємо спочатку із середнім елементом. Це в цілому сім порівнянь.c<dc
Оскільки я не бачу, як написати "приємний" псевдокод цього, дивіться тут для перевіреної (і, сподіваюся, читаючої) реалізації.
Кандидат наук дисертація (Стенфордський університет) Б. Б. Демут (1956)
Дивіться також Електронне сортування даних за HB Demuth (1985)
- Сортування та пошук
Дональд Е. Кнут; Мистецтво комп’ютерного програмування Vol. 3 (2-е видання, 1998 р.)