Сортировки с анимацией

Тема в разделе "WASM.X64", создана пользователем Mikl___, 24 дек 2022.

  1. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.584

    Спагетти-сортировка ver.2

    Она же «Spaghetti sort» ― относится к классу «Параллельных сортировок». Представим массив неотсортиронных чисел в виде пучка из сухих спагетти соответствующей длины. Установим спагетти вертикально на ровной поверхности. Сверху на спагетти опускается пресс, пока не встретится с самой длинной макарониной. Удаляем эту спагеттину и вставляем ее в конец (изначально пустого) массива отсортированных спагетти. Каждый раз, когда пресс касается очередной макаронины, фиксируем очередной отсортированный элемент и удаляем его из массива неотсортированных элементов. Повторяем, пока все спагетти не будут отсортированы. Худшая, средняя и лучшая сложность по времени [math]O(n)[/math]

    В аттаче asm-/rc-/exe-файлы и курсор
     

    Вложения:

    mantissa нравится это.
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.584
    Сортировка вставками. Румынский танец

    Merge-sort with Transylvanian-saxon (German) folk dance

    Быстрая сортировка. Венгерский танец
     
    Marylin нравится это.
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.584
    Сортировка Шелла. Венгерский танец

    Сортировка пузырьком

    Сортировка выбором. Цыганский танец
     
    Marylin нравится это.
  4. mantissa

    mantissa Member

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    72
    Мой вариант:
    Объединил все алгоритмы сортировок в одну dll, как и другие вспомогательные функции для работы с массивами. Теперь новые алгоритмы сортировок можно добавлять туда, без необходимости перекомпилировать исходную программу (при условии, что туда заранее импорты будущих сортировок засунуть :) ).
    Ну и сделал программку для визуализации на свой вкус, пока выбрать конкретную сортировку нельзя (как и уменьшить задержку между перестановками, сейчас 40мс), всегда сортирует вставками, но скоро добавлю такой функционал.
    Элементы отображаю с помощью Rect, а не LineTo, но градиент подсмотрел у Mikl___
    upload_2023-4-5_20-53-35.png
    upload_2023-4-5_20-53-50.png
    https://github.com/babasuck/sortVisualisation
     

    Вложения:

    • samples.zip
      Размер файла:
      30,9 КБ
      Просмотров:
      66
    Marylin и Mikl___ нравится это.
  5. mantissa

    mantissa Member

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    72
    Внес некие изменения:
    1) Избавился от мерцания формы при сортировке - за счет добавления технологии двойной буферизации. Теперь за отрисовку графики отвечает отдельный поток, который в бесконечном цикле 60 раз в секунду перерисовывает форму с двойным буфером (через CreateCompatibleDC и CreateCompatibleBitmap, а потом копирование во внешний контекст устройства), подсмотрел у Mikl___ и доработал
    2) Избавился от утечек памяти (Не удалял кисточки в двух местах, в итоге программа через 3 минуты работы ложилась :) )
    3) Т.к. теперь форма обновляется отдельным потоком нет смысла запрашивать перерисовку через InvalidateRect, убрал из dll эту функцию в сортировках, теперь она полностью независима от головной программы.
    https://github.com/babasuck/sortVisualisation
     

    Вложения:

    • sortVisual.zip
      Размер файла:
      31,5 КБ
      Просмотров:
      67
    Mikl___ нравится это.
  6. mantissa

    mantissa Member

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    72
    Доделал до конца, убрал границу у элементов, теперь создается красивый градиент после сортировки, добавил еще алгоритмов, по прежнему реализуются в alglib.dll
    Функционал программы:
    1) Визуализация сортировки - ЛКМ
    2) Перемешивание массива - ПКМ
    3) Выбор алгоритма сортировки - стрелки вправо и влево
    Алгоритмы: bubble, shaker, insertion, selection, quick, merge
    upload_2023-5-11_16-58-26.png
    upload_2023-5-11_16-58-42.png
     

    Вложения:

    • samples.zip
      Размер файла:
      13,4 КБ
      Просмотров:
      94
    Mikl___ и alex_dz нравится это.
  7. mantissa

    mantissa Member

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    72
    Была ошибка со стеком, исправил. Теперь selection и insertion работает.
    (Не заметил ошибки, потому что на моем компьютере работало, а на другом нет :mda:)
     

    Вложения:

    • samples.zip
      Размер файла:
      13,4 КБ
      Просмотров:
      60
    Mikl___ и Marylin нравится это.