Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
1 / 0 / 1
Регистрация: 03.05.2020
Сообщений: 34

Сортировка массива методом Шелла

27.09.2020, 12:24. Показов 5086. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте, вот такое мне дали задание в унике:
Необходимо создать функцию, осуществляющую сортировку массива по заданному алгоритму (см. вариант задания). Элементами массива являются значения, записанные в файл из задания 1. Отсортированный массив записывается в тот же файл. Сравнить время выполнения сортировки разработанной функции и стандартными средствами Python(например, функцией sorted()).
Поизучав сортировку шеллом, я понял как это работает, но написать программу для такой сортировки не смог.
В интернете нашел вот такой код:
Python
1
2
3
4
5
6
7
8
9
10
def shell(data):
    inc = len(data) // 2
    while inc:
        for i, el in enumerate(data):
            while i >= inc and data[i - inc] > el:
                data[i] = data[i - inc]
                i -= inc
            data[i] = el
        inc = 1 if inc == 2 else int(inc * 5.0 / 11)
    return data
И вот не могу в нем разобраться, i это номер элемента или сам элемент, или el это номер элемента.
ПОМОГИТЕ РАЗОБРАТЬСЯ С ТЕМ, КАК РАБОТАЕТ ЭТОТ КОД!!!
НА ПРИМЕРЕ
Python
1
2
3
data = [1,3,2,5,4]
shell(data)
print(data)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.09.2020, 12:24
Ответы с готовыми решениями:

Сортировка Методом Шелла
Подскажите пожалуйста как будет выглядеть сортировка Методом Шелла

Сортировка массива методом камня
Напишите программу, которая сортирует массив по возрастанию "методом камня": аналогично "методу пузырька", но в обратном порядке:...

Сортировка массива по возрастанию методом пузырька
Уважаемые господа,помогите пожалуйста разобраться,надо отсортировать массив по возрастанию методом пузырька Вот сам исходный код ...

1
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7391 / 4818 / 1246
Регистрация: 30.03.2015
Сообщений: 13,693
Записей в блоге: 29
27.09.2020, 12:26
Цитата Сообщение от stranger2287 Посмотреть сообщение
И вот не могу в нем разобраться, i это номер элемента или сам элемент, или el это номер элемента.
документация вроде ни от кого не скрыта
https://docs.python.org/3/libr... #enumerate
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.09.2020, 12:26
Помогаю со студенческими работами здесь

Сортировка массива методом пузырька с флажком
Напишите программу, которая сортирует массив, используя метод "пузырька" с флажком. Флажок (логическая переменная) показывает, была ли хотя...

Сортировка массивов по методу Шелла. Только блок-схема
Дана квадратная матрица размерности n×n. Напечатайте элементы боковой диагонали в порядке возрастания. Методом Шелла и только Блок-схема

Сортировка массива каждым из 3 способов (пузырьковая сортировка, сортировка выбором, сортировка вставкой)
1. Напишите программу, которая выполняет следующие функции: • заполнение элементов массива вещественными числами с заданной ...

Сортировка массива методом выбора и методом Шелла (и сравнение результатов)
помоги пожалуйста. есть массив Dim x() As Long Dim per As Integer Dim a, b, n As Integer a = 10 b = 99 n = 25 ReDim x(n -...

Сортировка Шелла и методом выбора: изменить код, чтобы сортировка происходила с конца массива, а не с начала
Есть 2 функции, нужно сделать так что бы сортировки проходили с конца массива. Много чего перепробовал, не могу понять что нужно изменить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru