|
Заблокирован
|
||||||
Quicksort qbasic быстрая сортировка половиной и МЫ04.05.2018, 22:23. Показов 9361. Ответов 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 | |
|
Управление COM-1 портом в QBasic
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|