JavaRush /Курси /Модуль 1: Python Core /Порівняння алгоритмів сортування

Порівняння алгоритмів сортування

Модуль 1: Python Core
Рівень 18 , Лекція 9
Відкрита

10.1 Порівняння різних алгоритмів сортування.

Ось порівняльна таблиця для різних алгоритмів сортування:

Алгоритм Найкращий час Середній час Найгірший час Просторов. складність Стабільність
Пузиркова сортування (Bubble Sort) O(n) O(n^2) O(n^2) O(1) Так
Сортування вставками (Insertion Sort) O(n) O(n^2) O(n^2) O(1) Так
Сортування вибором (Selection Sort) O(n^2) O(n^2) O(n^2) O(1) Ні
Сортування злиттям (Merge Sort) O(n log n) O(n log n) O(n log n) O(n) Так
Швидке сортування (Quick Sort) O(n log n) O(n log n) O(n^2) O(log n) Ні
Сортування купою (Heap Sort) O(n log n) O(n log n) O(n log n) O(1) Ні

10.2 Критерії вибору алгоритму сортування для різних задач.

У кожного алгоритму є свої сильні і слабкі сторони. На маленьких об'ємах даних навіть пузиркова сортування може бути найкращим вибором.

Вам потрібно орієнтуватись на такі критерії:

1 Розмір даних:

  • Маленькі набори даних (n < 1000):
    • Пузиркова сортування, Сортування вставками: прості і зрозумілі, ефективні для невеликих наборів даних.
  • Великі набори даних (n > 1000):
    • Сортування злиттям, Швидке сортування, Сортування купою: більш складні, але ефективні для великих об'ємів даних.

2 Структура даних:

  • Майже відсортовані дані:
    • Сортування вставками: працює майже лінійно для майже відсортованих даних.
  • Випадкові дані:
    • Швидке сортування, Сортування злиттям, Сортування купою: ефективні для випадкових даних.

3 Стабільність:

  • Потрібна стабільна сортування:
    • Сортування вставками, Сортування злиттям: зберігають відносний порядок елементів з однаковими значеннями.
  • Не потрібна стабільна сортування:
    • Сортування вибором, Швидке сортування, Сортування купою: можуть бути використані, якщо стабільність не важлива.

4 Додаткова пам'ять:

  • Обмежена пам'ять:
    • Сортування вставками, Сортування вибором, Сортування купою: використовують O(1) додаткової пам'яті.
  • Доступна додаткова пам'ять:
    • Сортування злиттям: вимагає O(n) додаткової пам'яті, але може бути ефективною для великих даних.

10.3 Приклади задач, де один алгоритм є переважнішим за інший.

Давайте тепер відштовхнемося не від алгоритмів, а від задач. Приклади завдань, де один алгоритм є переважнішим за інший

1 Сортування невеликих масивів:

Пузиркова сортування, Сортування вставками: простота реалізації робить їх ідеальними для невеликих масивів, особливо якщо масиви майже відсортовані.

2 Сортування великих масивів:

Швидке сортування, Сортування злиттям, Сортування купою: ефективні для великих об'ємів даних завдяки їх логарифмічній часовій складності.

3 Сортування майже відсортованих масивів:

Наприклад, ви вставили кілька елементів в уже відсортований масив.

Сортування вставками: працює майже лінійно на таких масивах.

4 Сортування даних, де важлива стабільність:

Сортування злиттям: зберігає порядок однакових елементів і ефективна для великих об'ємів даних.

Сортування вставками: також зберігає порядок і ефективна для невеликих об'ємів даних.

Сортування вставками: також зберігає порядок і ефективна для невеликих об'ємів даних.

Сортування вибором, Сортування купою: використовують тільки O(1) додаткової пам'яті і можуть бути використані, якщо пам'ять обмежена.

6 Паралельне сортування:

Сортування злиттям: легко паралелізується, оскільки кожну половину можна сортувати незалежно.

1
Опитування
Типи сортування, рівень 18, лекція 9
Недоступний
Типи сортування
Типи сортування
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ