|
Заблокирован
|
||||||
Quicksort qbasic быстрая сортировка половиной и МЫ04.05.2018, 22:23. Показов 8999. Ответов 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
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|