5 / 5 / 1
Регистрация: 09.12.2020
Сообщений: 194
|
|||||||||||||||||||||||||||||||
1 | |||||||||||||||||||||||||||||||
Неправильный Qsort09.12.2020, 11:43. Показов 1350. Ответов 13
==Delphi7
Если я использую классику сортировки, то все сортируется правильно, даже если я использую массив ссылок на массив входа байтов, которые надо сортировать. То есть, если в текущем коде вот это, то сортируется правильно
Испробовал все, давал адреса в функцию, смещения и прочее, все неправильно, даже если сделать вот так, то неправильно сортирует
Добавлено через 3 часа 43 минуты
0
|
09.12.2020, 11:43 | |
Ответы с готовыми решениями:
13
Неправильный логин и неправильный пароль, программа не выдает сообщения об ошибке Неправильный парсинг строки и неправильный её вывод qsort qsort |
3760 / 2264 / 705
Регистрация: 29.05.2013
Сообщений: 9,616
|
||||||
09.12.2020, 12:11 | 2 | |||||
Если a>b или a=b функция будет возвращать все равно False, вот и получаете неправильный результат сортировки
0
|
5 / 5 / 1
Регистрация: 09.12.2020
Сообщений: 194
|
|
09.12.2020, 12:12 [ТС] | 3 |
Сильно сомневаюсь, что настройки виноваты
0
|
5 / 5 / 1
Регистрация: 09.12.2020
Сообщений: 194
|
|
09.12.2020, 12:20 [ТС] | 4 |
Неправильный ?
while a[i] < x do i:=i+1; // именно так в оригинале работает нормально Аналогично в Function CmpByte (a, b: byte): boolean; Result:= a < b; У меня большая просьба проверить этот код в Дельфи, пжлста )))
0
|
3760 / 2264 / 705
Регистрация: 29.05.2013
Сообщений: 9,616
|
|
09.12.2020, 12:28 | 5 |
Массив А у вас какого типа?
0
|
5 / 5 / 1
Регистрация: 09.12.2020
Сообщений: 194
|
|||||||||||
09.12.2020, 12:41 [ТС] | 6 | ||||||||||
0
|
3760 / 2264 / 705
Регистрация: 29.05.2013
Сообщений: 9,616
|
||||||
09.12.2020, 12:46 | 7 | |||||
А вы измените размерность массива
0
|
5 / 5 / 1
Регистрация: 09.12.2020
Сообщений: 194
|
|
09.12.2020, 12:50 [ТС] | 8 |
Мне надо сортировать от 100 Мб и выше
На 10 символах в файле я трассировал, все правильно, конечно 1к байт и выше отследить невозможно. Можете проверить код ?
0
|
5 / 5 / 1
Регистрация: 09.12.2020
Сообщений: 194
|
|
09.12.2020, 13:04 [ТС] | 9 |
Проблема именно в функции. Я уже вкладывал ее в процедуру, все равно не работает, как надо, есть ошибки
0
|
5 / 5 / 1
Регистрация: 09.12.2020
Сообщений: 194
|
|
10.12.2020, 09:41 [ТС] | 10 |
Я вспомнил, эта проблема была и раньше, но я переписал фукцию сравнения на ассемблер и проблема была решена, все сортировалось правильно. Листинг ассемблера остался, но как переписать на Вин32-64 даже не знаю, немного погуглил, 4 регистра точно надо сохранять, но как добраться к адресу данных через AllocMem, я не знаю.
Если я понял правильно, регистры называются как AX -> EAX(32) RAX(64), но непонятно, как получить адрес и писать туда байты. Все равно придется переписывать на ассемблер для скорости, может кто поможет ?
0
|
Модератор
3758 / 2262 / 783
Регистрация: 15.11.2015
Сообщений: 8,997
|
||||||
10.12.2020, 12:43 | 11 | |||||
Лучше так:
0
|
5 / 5 / 1
Регистрация: 09.12.2020
Сообщений: 194
|
|
10.12.2020, 12:46 [ТС] | 12 |
Все равно не работает, массив конечно сортируется, но на выходе есть частично мусор.
0
|
Модератор
3758 / 2262 / 783
Регистрация: 15.11.2015
Сообщений: 8,997
|
|
10.12.2020, 13:33 | 13 |
Сообщение было отмечено West2000 как решение
Решение
Где минимальный проект, в котором это проявляется? Или предлагаешь нам самостоятельно додумать и собирать проект?
1
|
5 / 5 / 1
Регистрация: 09.12.2020
Сообщений: 194
|
||||||
10.12.2020, 18:52 [ТС] | 14 | |||||
Мдя уж... Вычистил все, чтобы минимально получилось.
Все заработало нормально... Непонятно..
В общем, я подумал и у меня только одна версия - компилятор сохранил настройки неправильно, хотя код вроде работает, но частично не совсем так. Такое уже было, только сейчас об этом вспомнил. Код я почистил от лишнего, сделал новый проект и вставил туда код, только тогда заработало правильно. Наверное и с исходным кодом все работать будет, надо проверить. Итого - код работает правильно, но крови мне компилятор Дельфи7 попил много, неделя впустую, я уже подумал, что чего-то не понимаю, поэтому обратился сюда на сайт. Но и Дельфи10.2 тоже не идеал, глючит иногда, вот почему я проверяю критичный код в 2 компиляторах. Почему Дельфи7 ? Все равно надо делать 32-64 бит версии, а 7 быстрей будет работать, ну и размер меньше, это не суть важно, но все таки. Сейчас проверил сортировку на 100 МБ, заодно подключил таймер, все работает правильно. Ну и собсно хочу сказать спасибо сайту, проблему решили вместе. ))) Просто когда много кода, сложно понять, где косяк, начинаю упрощать код для проверки и опять ошибка, мозг кипит.. В качестве последней информации, которую недавно проверил. В тырнете не все так однозначно описано... MergeSort, ну да, работает быстро, но мне не применить его. Еще быстрее работает пирамидальная сортировка, уже можно применить для меня, там линейная скорость. Но в любом случае, Qsort работает быстрее, но там другая проблема - он затыкается на одинаковых строках и начинает тормозить. Это решается предсортировкой AnySort или сортировка выбором, а потом уже применить Qsort, вполне нормальная скорость сортировки получается. Ну а если Qsort переписать на ассемблер, то скорость повышается 10-100 раз, причем не весь сорт, а только процедуру сравнения строк, проверял раньше практически. До RadixSort еще не добрался, наверное не слишком быстро будет, подожду. Стал делать свою сортировку, но пока логику обдумываю, код будет короткий, но надо все продумать. Вот так незаметно накопилось много кода и компилятор глюкнул. Если включена Оптимизация, то скорость увеличивается примерно на 20%, но есть опасность генерации неправильного кода, поэтому я пишу черновик без Оптимизации и проверяю. Ну вот добавилось еще неправильное сохранение настроек... Ну что же, может еще что спрошу, сильно не ругайте меня )))
0
|
10.12.2020, 18:52 | |
10.12.2020, 18:52 | |
Помогаю со студенческими работами здесь
14
qSort qsort C++ qsort qsort qsort Вопрос по ()qsort Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален
В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
|
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
|
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели
В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
|
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества
Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
|
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов.
. . .
|
С чего начать программировать микроконтроллеры
raxper 06.01.2025
Введение в мир микроконтроллеров
Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
|
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
|
Обновление сайта www.historian.by
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
|
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
|
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list):
s=^y]
p=x and y
for i in range(1,len(x)):
s. append((x^y)^p)
p=(x and y)or(p and (x or y))
return s
x=list()
y=list()
|
Это мы не проходили, это нам не задавали...(асихронный счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
|
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|