MakarovSuites
Українська
EnglishDeutschРусскийУкраїнськаFrançaisEspañolItalianoPolski
Зв’язок і ліцензії

Math

Перегони сортувань

Три сортування біжать по одному масиву з однаковою швидкістю в ПОРІВНЯННЯХ, і першим фінішує те, що спитало менше. Вирішує не розмір, а безлад: на впорядкованому вході вставки беруть 63 порівняння, а швидке — 2016.

Перегони сортувань — Зображення з програми
Зображення з програми

Що відбувається

Три доріжки, один масив і один спільний бюджет роботи: усі три сортування просуваються на однакову кількість порівнянь — або переміщень, якщо перемкнути одиницю, — тож першим фінішує те, якому потрібно найменше цієї одиниці, а не те, що намальоване швидше. На всіх доріжках одна мова: два порівнювані ключі обведені золотом, щойно записаний ключ спалахує зеленим, опорний елемент позначений червоним, оброблювана ділянка взята в дужку, елементи на своєму остаточному місці отримують зелену підставку, а ключ, який тримає сортування вставками, висить над щілиною, куди опуститься. Передбачте переможця до кнопки «Старт» або ведіть перегони по одній одиниці. Спробуйте входи: на відсортованому масиві вставки фінішують майже одразу, а швидке сортування з останнім опорним потрапляє у свій найгірший випадок; зворотний порядок — найгірший випадок вставок; з повторюваними ключами колір — це місце у вході, і злиття зберігає порядок рівних ключів, а швидке їх перемішує. Кожна доріжка показує й справжній час прогону на цьому комп'ютері — третю величину, ніколи не одиницю перегонів.

Рівняння модуля
Рівняння
n елементів, а перегони ведуться в ПОРІВНЯННЯХ - у тій величині, про яку йдеться у формулах
сортування вставками ПЕРЕМІЩУЄ елемент рівно стільки разів, скільки інверсій має масив: тотожність на КОЖНІЙ перестановці, перевірена по всіх n! для n <= 8
порівняння вставками = інверсії + (n − 1) − (префіксні мінімуми при i >= 1);  середнє = n(n−1)/4 + n − H_n  РІВНО:  n = 8 -> 19.282142857142858;  n = 64 -> 1067.2561090962943
швидке сортування (Ломуто, останній елемент як опорний) середнє = 2(n+1)H_n − 4n  РІВНО:  n = 8 -> 16.921428571428571;  n = 64 -> 360.70581748175005
найгірший випадок сортування злиттям = n·ceil(lg n) − 2^ceil(lg n) + 1 - це формула, а не оцінка: 321 при n = 64, проти ceil(lg n!) = 296, нижньої межі для БУДЬ-ЯКОГО сортування порівняннями
ці дві величини рівні при n <= 4 і розходяться після цього; сортування злиттям також записує n·lg n елементів незалежно від входу - 384 при n = 64
64 елементи, усі місця перемішані:  1001 інверсія;  вставками 1057 порівнянь / 1001 переміщення, злиттям 307 / 384, швидке 352 / 306
64 елементи, відсортований вхід:  вставками 63, злиттям 192, швидке 2016 - і 2016 дорівнює n(n−1)/2, НАЙГІРШОМУ випадку швидкого сортування
злиття випереджає вставки при 15 перемішаних місцях із 64 (269 проти 246): поріг визначає безлад, а не розмір - на випадковому вході злиття попереду починаючи з n = 4
однакові ключі, 64 елементи на 8 значень:  пар, залишених у зворотному порядку - вставками 0, злиттям 0, швидке 77

Інші експерименти

До каталогу
Ширина і глибина — Зображення з програми

Math

Ширина і глибина

Два однакові лабіринти, два обходи, клітинка за такт. Шар, на якому ширина знайшла клітинку, дорівнює найкоротшому шляху — це тотожність. Глибина не коротша ніколи, а наскільки довша — залежить від того, куди йти.

Найдешевший шлях — Зображення з програми

Math

Найдешевший шлях

Місцевість, де крок коштує ціну клітинки, у яку входиш, і хвиля закритих вершин розходиться за ЦІНОЮ, а не за відстанню. Повзунок кладе на карту від’ємне ребро і має три виміряні ділянки.

Нім і двійкова сума — Зображення з програми

Math

Нім і двійкова сума

Купи каменів, а під ними їхній двійковий запис. Розряд із непарним числом одиниць горить червоним; коли червоних немає, той, чий хід, уже програв. Правило перевірено розбором усієї гри.