Quicksort насправді досить простий для розуміння, якщо вони розуміють основний підрахунок та ділення на 2. Складіть купу флеш-карт X, пронумеруйте їх 1 - X і перетасуйте їх. Тоді ось пояснення:
Гаразд, у нас тут є колоди (скажімо, 20) карток. Ми хочемо привести їх у порядок, тож спочатку 1, потім 2, потім 3 тощо. Ось дуже швидкий спосіб зробити це.
Спочатку перейдемо через цю колоду і зробимо з неї дві палі. Половина 20 - це 10, тому все, що більше 10, знаходиться в цій купі праворуч, а все менше, ніж у меншій, йде в цій купі зліва. (Обов’язково продемонструйте, як ви йдете.)
Тепер давайте зробимо те ж саме з меншими палі. Що половина з 10? (Хтось каже «п’ять!») Правильно! Тому все, що більше 5, йде в цю купу праворуч, і все, що менше, знаходиться в цій купі зліва.
І ось, у нас є група, яка більша за 10. Отже, половина 10 - це 5, а що 10 плюс 5? (Хтось каже «п’ятнадцять!») Правильно! Тому все, що більше 15, йде в цю купу праворуч, а все, що менше 15, знаходиться в цій купі зліва.
А тепер палі стають досить маленькими, що ви можете їх легко подивитися і привести в порядок. Подивіться, ось у нас є 2, 4, 5, 3, 1
. Тому ми просто перемикаємо їх так, і ви можете бачити 1, 2, 3, 4, 5
. Тож давайте зробимо те ж саме з іншими палі, і тоді ми просто наведемо палі в порядок і подивимося! Вони в порядку від 1 до 20!
Вітаю. Ви щойно навчили купу дітей основним принципам адаптивного алгоритму швидкої боротьби! Ви можете зайти трохи глибше, ніж це залежно від психічної зрілості, але вийти набагато далі за цей момент вимагає певного розуміння формальної логіки.
Що стосується доведення його складності, то це складніше. Це одна з речей, яка вимагає формальної логіки, і їм в першу чергу доведеться зрозуміти основні принципи нотації big-O. Можливо, спочатку ви захочете затриматися на цій частині.