Back2dos все це сказав, я просто спробую додатково уточнити точку, яка, на мою думку, є найбільш важливою:
Сортування Radix може лише сортувати фактичні примітивні значення, які містяться в масиві, виходячи з їх двійкових цифр. У реальних сценаріях інженерної розробки програмного забезпечення в реальному світі цей випадок не зустрічається майже ніколи . Те, що ми, як правило, робимо набагато частіше, це сортування масивів складніших (непомітних) структур даних, а іноді ми сортуємо масиви індексів до інших сутностей.
Тепер масив індексів для інших об'єктів насправді є масивом примітивів, але порядок сортування забезпечує інтерфейс порівняння (та / або делегат у C #), який порівнює не індекси, а сутності, індексовані індексами. Таким чином, порядок сортування абсолютно не має відношення до порядку значень примітивів, і тому сортинг radix абсолютно марний для цього сценарію.
Приклад:
У нас є масив рядків: [0] = "Майк", [1] = "Альберт", [2] = "Зоро". Тоді ми оголошуємо масив індексів до цих рядків: [0] = 0, [1] = 1, [2] = 2. Потім ми сортуємо масив індексів, передаючи йому компаратор, який порівнює не самі індекси, а фактичні рядки, на які посилаються ці індекси. Після сортування отриманий масив індексів виглядатиме так: [0] = 1, [1] = 0, [2] = 2. Як бачимо, цей порядок сортування не має нічого спільного з бінарними шаблонами значень, що містяться в масиві, і все ж, обходячи цей масив індексів і отримуючи кожний відповідний рядок, ми відвідуємо рядки в упорядкованому порядку.