|
Заблокирован
|
||||||
Quicksort qbasic быстрая сортировка половиной и МЫ04.05.2018, 22:23. Показов 8911. Ответов 86
Метки нет (Все метки)
quicksort qbasic быстрая сортировка половиной и МЫ
на тему сортировка читая дюжину статей с программами иногда часто вижу ляп: для А элементов 2 вложенных массива равные и число перестановок якобы А^2 зато правильнее: I от1 доА и J отI доА и видимо те ошиблись пиша 1 вместо I причём часто противореча пояснениям для А=100 требуется А^2=10ооо ходов а правильнее =100*(99)/2 =4950 ходов 2-жды меньше видно из формулы и ещё вникнув в сортировку пополам получается для А=100 =2*((100/2)*((100/2)-1)/2) = 2450 ходов 4-жды меньше чем советуют по интернету и возможно реально делить на 4 части и далее сортируется пузырьковая сортировка Проведя эксперимент контролируя время сортируя массив обратный от 100ооо до 1 всё про qb64 компилятор qbasic: мой пополам 135 секунд и А^2 215 секунд мой простой 389 секунд и А^2 497 секунд чужие непонятные около 200 секунд и вообще предполагаю используя мои строки контролирующие время реально тестировать многие алгоритмы сортировки на время лучше всего массив от 100ооо до 1 и ещё есть методы обмена без доп переменной В свете вышесказанного: на тему сортировка и МЫ обнаруживаются остроумные решения ускоряющие тысячи операций в разы Вдобавок создал строки контролирующие время пока отсутствующие в программе в начале темы и возможно проверять на скорость варианты сортировки Программу размещаю через тэг code
0
|
||||||
| 04.05.2018, 22:23 | |
|
Ответы с готовыми решениями:
86
Меньшее из двух чисел заменить половиной их суммы Меньшее из двух чисел заменить половиной их суммы, а большее — их удвоенным произведением |
|
Кормпилятор
|
||||||||
| 08.05.2018, 19:31 | ||||||||
|
Добавлено через 12 минут Rapid будет быстрее это 100%, тут интереснее будет узнать как "честный" Sort отрабатывает без выделений тонн памяти.
0
|
||||||||
|
Модератор
|
|||
| 08.05.2018, 19:36 | |||
|
0
|
|||
|
Кормпилятор
|
||
| 08.05.2018, 19:44 | ||
|
из сообщения m-ch. Ты же на VB алгоритм функции из проги locm'a переписал из дебагера? Т.е. ты хочешь сравнить скорости или не?
0
|
||
|
Модератор
|
|||||||||
| 08.05.2018, 19:51 | |||||||||
0
|
|||||||||
|
Кормпилятор
|
||
| 08.05.2018, 20:02 | ||
|
слышал стандартный QSort в 1.5 раза ускоряли, а переписывание на асм даёт что-то около 5%.
0
|
||
|
|
||
| 08.05.2018, 20:19 | ||
|
Ну тогда да, Пурик лучший! Я счастлив.
0
|
||
|
Кормпилятор
|
|||
| 08.05.2018, 20:25 | |||
|
Ну это мы конечно измеряем сферического коня в вакууме, но всё равно забавно. Добавлено через 3 минуты
0
|
|||
|
Модератор
|
||
| 08.05.2018, 20:35 | ||
|
Если речь идет про быстродействие компиляторов то стоит сравнивать одинаковый код в обоих языках. В VB6 просто нет встроенной сортировки, а в PB мы получается сравниваем с ассемблерным кодом. С таким же успехом можно и в VB6 написать на ассемблере и скорости будут одинаковые.
0
|
||
|
Кормпилятор
|
||
| 08.05.2018, 20:43 | ||
|
вроде не сильно. Так вот если прикинуть что чистый QSort на PB быстрее не будет(почему я просил именно QSort) то мы имеем следующую картину, делим время на 1.5 и получаем "потипа идеальный случай" и приставляем к нему то время, за которое отрабатывает полностью заряженный и оптимизированный алгоритм PB. Получается что-то близкое к идеальному соотношению. Потому и было сказано, что это сферический конь в вакууме, выкладки очень приблизительные. Если написать QSort на PB, будет точнее и понятнее, разумеется.
0
|
||
|
|
||
| 08.05.2018, 21:03 | ||
|
Как будто сравниваем, какой компилятор быстрее скомпилирует N-е кол-во строк ![]() Вернее будет эффективность компиляторов. Так сказать наиболее близкий результат к идеальному машинному коду. Типа Микрософт VB против GCC против FASM?
0
|
||
|
Заблокирован
|
|||||||||||||||||||||
| 09.05.2018, 20:32 [ТС] | |||||||||||||||||||||
|
в данной теме и на всём форуме
видимо только я задумался и реализовал и напоминаю на каждой странице про подсчёт числа проходов и перестановок и в эти часы создал универсальные строки добавляемые в программы для сравнения хоть bas хоть exe конкурс и универсальная оболочка и МЫ число ячеек n и признаки четвертей массива abcd в файл c:/N.txt zapoln.bas / ехе создаёт c:/KOHKYPC.txt с целью создать области заполненные данными большими и малыми и реально создавать любой массив одинаковый для любого сортировщика zapoln.bas
подсказываю дальновидно: мои счётчики перестановок p=p+1 и проходов s=s+1 нужны лишь 1 раз а в обычное время тормозят посему важно исключить лишнее чтоб не тормозить самым быстрым QBasic совместимым пока считаю неизвестно где найденный алгоритм сначала дополненный моими счётчиками а ниже см. без счётчиков:
на понятном человеческом языке
в процессе соревнования сортировок выявил 3 алгоритма basic и мой занимал 3-е место отставая на доли секунды и ежели читаете данные строки легко додуматься: удалось оптимизировать как и предполагалось в начале темы разделив массив пополам и ещё пополам и посмотрев файл результатов всё отсортировано 10ооо ячеек за о,72 с а оппонент почти секунду 22ооо ячеек за 3,3 с а оппонент почти 5 сек 100ооо ячеек за 66 с а оппонент за 90 сек и то мой алгоритм ещё улучшится разделяя не пополам а именно в зависимости от среднего на каждом участке но пока доделывать некогда и пришлось наоборот индексы превратить в переменные для конкурса зато потом наоборот работающая сортировка разовьёт главную идею инструкция испытаний: все программы содержат строки подключающие одинаковый массив данных создаваемый управляемо в виде 1/4-й разной мощности в файле c:/N.txt указано количество и мощности программа zapoln.exe формирует массив на c:/ сортировщики стартуя считывают одно и то же и в процессе показывают одинаковые сообщения и подсчитывают время чисто сортировки сообщая на экране время и число проходов и перестановок и сортировав пишут сортированное на c:/ и ежели тема будет развиваться тогда размещу наработки и ещё новее будут Добавлено через 3 часа 30 минут новейшие новости в День Победы: доделал разбиение на 8 частей пока переменными но легко переделать во вложенные циклы и знаю о возможности делить массив не пополам и результаты мои же улучшены естественно в 2 раза: 10ооо ячеек за о,36 с а оппонент почти секунду 22ооо ячеек за 1,6 с а оппонент почти 5 сек 100ооо ячеек за 33 с а оппонент за 90 сек разместил EEE=EXE в архиве с инструкцией N.txt 1 МБ https://yadi.sk/d/5wQUpG2b3VccE9 и каждый: может + должен = обязан сравнить со своими алгоритмами сортировки
0
|
|||||||||||||||||||||
|
|
|
| 10.05.2018, 14:46 | |
|
Вообще, - что вы зациклились на быстрой сортировке?! В реальных проектах её всё равно ОПАСНО использовать. Поэтому, лучше не надо. Есть достойный конкурент: сортировка Шелла. Никакой рекурсии, никакого срыва стека. Работает очень быстро, сам игрался с разными сортировками и проводил бенчмарки. Самые быстрые сортировки это Шелл и квиксорт. Причём шелл практически не уступает быстрой, а иногда и превосходит её.
0
|
|
|
|
||
| 10.05.2018, 17:19 | ||
|
Сама программа:
0
|
||
|
COM‐пропагандист
|
|
| 14.05.2018, 11:00 | |
|
Чат, самая лучшая сортировка — это корзинная сортировка. И вот почему.
1. Это сортировка без сравнений. 2. Сложность О(n).
0
|
|
|
|
|
| 14.05.2018, 12:21 | |
|
0
|
|
|
COM‐пропагандист
|
|
| 14.05.2018, 17:09 | |
|
locm, а что корзинная сортировка — это сортировка без сравнений, не смутило?
0
|
|
|
Кормпилятор
|
||
| 14.05.2018, 18:32 | ||
|
Сейчас все сортировки в реальных задачах - гибридные, одной из самых быстрых остаётся модиф. QSort. И никто не говорил, что его нельзя реализовать без рекурсии. Сравнения тоже нужны, потому что в реальных задачах мы не всегда сортируем голый массив, часто требуется сортировать значения, каждое из которых подвязано к структуре. При обмене мы можем поменять местами указатели или память непосредственно(что не потребует доп. массива указателей). А озвученный метод действительно хорош, применяю у себя, не читая википедий, доволен.
0
|
||
| 31.05.2021, 08:27 | ||
|
(Быструю сортировку, быструю сортировкой с модификацией - сортировка вставками малых массивов, сортировку Шелла, сортировку расческой, сортировку слиянием) Шелл оказался самый медленный, Сортировка расческой существенно ее превосходит, сортировка слиянием показывает похожие результаты с быстрой сортировкой на случайных данных. В тестах сортировал целые числа в количестве: 1 млн, 2 млн, 5 млн, 10 млн, 20 млн Самая быстрая получилось QSort с сортировкой вставками малых массивов, по скорости на FB уже сопоставима с сортировкой на PB, 20 млн сортируется менее 3х секунд
0
|
||
|
|
||
| 31.05.2021, 13:58 | ||
|
0
|
||
| 31.05.2021, 13:58 | |
|
Помогаю со студенческими работами здесь
80
Управление COM-1 портом в QBasic
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
в-строка - входное арифметическое выражение в инфиксной(обычной). . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|