|
0 / 0 / 0
Регистрация: 28.02.2023
Сообщений: 4
|
|
Быстрая сортировка28.02.2023, 21:17. Показов 10015. Ответов 2
Метки нет (Все метки)
Реализуйте алгоритм быстрой сортировки (её называют сортировкой Хоара).
За один шаг алгоритма выполните следующие действия: Выберите один элемент списка (его иногда называют опорным элементом). Сделать это можно разными способами, но важно придерживаться одного принципа. В нашем случае опорным элементом всегда будет крайний правый (например, в списке [1, 2, 3] это 3). Разбейте текущий список на три части: элементы меньше опорного, равные опорному и больше опорного. В списке [5, 8, 9, 4, 2, 9, 1, 8] опорным элементом будет число 8 (крайнее правое), а получить надо три списка: [5, 4, 2, 1]; [8, 8]; [9, 9]. Для списка с элементами меньше опорного ([5, 4, 2, 1]) и списка с элементами больше опорного ([9, 9]) выполните те же шаги заново — запустите рекурсию. результат_1 = рекурсия([5, 4, 2, 1]). результат_2 = [8, 8]. результат_3 = рекурсия([9, 9]). Сложите результаты вызова рекурсий и получите отсортированный список: отсортированный_список = результат_1 + результат_2 + результат_3. Пример с разбором алгоритма выше (как сработала рекурсия) С [9, 9] всё просто. Элементов меньше или больше опорного нет, поэтому рекурсия не пойдёт глубже, а вызов рекурсии по списку [9, 9] быстро завершится и вернёт этот же список (его и не нужно было сортировать). С [5, 4, 2, 1] рекурсия пойдёт вглубь: Первый шаг — [5, 4, 2, 1]: опорным элементом выбирается число 1; меньше 1 элементов нет (значит, рекурсия по ним продолжаться не будет); помимо опорного элемента, других равных нет, получаем список [1]; больше 1 все остальные элементы [5, 4, 2] — с этим списком будет вызвана рекурсия. Второй шаг — [5, 4, 2]: опорный элемент — 2; меньше опорного — []; равные опорному — [2]; больше опорного — [5, 4]. Третий шаг — [5, 4]: опорный элемент — 4; меньше — []; равны — [4]; больше — [5]. Четвёртый шаг — [5]: меньше — []; равны — [5]; больше — []. Тут вызовы завершаются, мы соединяем списки и возвращаем список [5] на уровень выше (в вызов с числами [5, 4]). Там мы соединяем списки [] + [4] + [5] и получаем [4, 5]. Этот список возвращаем ещё на уровень выше (в вызов с числами [5, 4, 2]). Опять складываем списки: [ ] + [2] + [4, 5] = [2, 4, 5]. Этот список возвращаем в вызов на уровень выше (тот, который был запущен с [5, 4, 2, 1]). Складываем списки: [ ] + [1] + [2, 4, 5] = [1, 2, 4, 5]. Возвращаем [1, 2, 4, 5] в самый первый вызов, где мы выполняли следующие вызовы: результат_1 = рекурсия([5, 4, 2, 1]). результат_2 = [8, 8]. результат_3 = рекурсия([9, 9]). В итоге после выполнения всех рекурсий получаем: результат_1 = [1, 2, 4, 5]. результат_2 = [8, 8]. результат_3 = [9, 9]. Складываем все списки: [1, 2, 4, 5] + [8, 8] + [9, 9] = [1, 2, 4, 5, 8, 8, 9, 9]. Этот полный список возвращается наружу — туда, где функция была вызвана изначально. Напишите функцию, которая реализует этот алгоритм. Для удобства добавьте вспомогательную функцию, пусть она принимает на вход список, а возвращает три списка (с элементами меньше, равными и больше опорного). Пример работы такой функции: числа = [4, 9, 2, 7, 5] вспомогательная_функция(числа) → [4, 2], [5], [9, 7] Эту функцию можно будет использовать в основной-рекурсивной, чтобы код основной функции стал проще и понятнее. Что оценивается Результат вычислений корректен. Формат вывода соответствует примеру. Основной функционал описан в отдельной функции(-ях). Переменные и функции имеют значащие имена, не только a, b, c, d.
0
|
|
| 28.02.2023, 21:17 | |
|
Ответы с готовыми решениями:
2
|
|
Супер-модератор
|
||||||
| 01.03.2023, 07:41 | ||||||
Сообщение было отмечено mishurabs как решение
Решение
3
|
||||||
| 01.03.2023, 07:41 | |
|
Помогаю со студенческими работами здесь
3
Быстрая сортировка списка Сортировка массива каждым из 3 способов (пузырьковая сортировка, сортировка выбором, сортировка вставкой) Быстрая сортировка
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|