Читаючи про різні алгоритми сортування, я бачив, як згадувалося, що деякі є "стабільними", а деякі - ні. Що це означає, і які компроміси беруть участь на цій основі при виборі алгоритму?
Читаючи про різні алгоритми сортування, я бачив, як згадувалося, що деякі є "стабільними", а деякі - ні. Що це означає, і які компроміси беруть участь на цій основі при виборі алгоритму?
Відповіді:
Стабільний сорт - це такий, який зберігає початковий порядок вхідного набору, де алгоритм порівняння не розрізняє два та більше елементів.
Розглянемо алгоритм сортування, який сортує картки за рангами , але не за матом. Стабільний сорт гарантує збереження оригінального порядку карт, що мають однаковий ранг; нестабільний сорт не буде.
Стабільні алгоритми зберігають відносний порядок елементів.
Таким чином, стабільний алгоритм сортування зберігатиме відносний порядок значень, які порівнюються як рівні.
Розглянемо алгоритм сортування, де ми сортуємо набір 2d точок на основі їх розмірності X.
Колекція для сортування: {(6, 3), (5, 5), (6, 1), (1, 3)}
Стабільне сортування: {(1, 3), (5, 5), (6, 3), (6, 1)}
Регулярне сортування: або {(1, 3), (5, 5), (6, 3), (6, 1)}
, або{(1, 3), (5, 5), (6, 1), (6, 3)}
Що стосується компромісу ... ну, стабільне сортування є менш ефективним, але іноді це потрібно.
Наприклад, коли користувач натискає на заголовок стовпця, щоб сортувати значення в інтерфейсі, розумно очікувати, що його попередній порядок сортування буде використаний у випадку рівних значень.