в предварительно сортированном списке
А кто сказал что он отсортирован предварительно , я просто ввел значения для отладки кода , но не факт что именно так и будет вводится… вероятность большая… но всего лишь вероятность
дет обещал пузырёк показать, с двумя переменными по 20 байт, ждёмс
не 5 - 5тест —
а так 30
блин вроде по русски пишу…
меня не интересует сейчас какие есть алгоритмы… я это уже читал… меня интересует конкретно их реализация… У меня проблема не в том что я не могу понять с помощью чего мне делать , у меня проблема , почему не работает код с помощью которого это делается и где я торможу … пузырьковая расческа .хоара . комбинированый- какая разница… вот выбрал метод с помощью стандартной функции и пытаюсь заставить работать… ну да пока не выходит … но проблема не в самом методе а в реализации.
Как бы я сделал сортировку строк:
Массив указателей на строки, делаем сортировку по первому символу строк, расставляем указатели по возрастанию, берём второй символ при фиксированом первом, опять расставляю указатели по алфавиту ну и т д…
Кучка вложенных циклов, глубина = максимальной длине строки.
Но не потребуется перекачивать строки в ОЗУ, все в progmem можно читать напрямую.
Беда, че…
Учим программирование, учимся в институтах, лет через 5 все получится.
И да, для этого рекомендуется определённый склад ума, не всем дано к сожалению.
И есть еще путь - заказать разработку за денежку.
Я не в прогмем… он не подходит. я использую еепром.
2560 слабовата , для сортировки на лету по символу с выводом на экран - в течении работы … одно дело выводить данные на экран просто из еепром , а совсем другое дело во время работы заниматься сортировкой формированием строк и вывод на дисплей…
а где я просил разработать за меня код,? я просил помочь указать где я неправильно делаю и почему… Или Вы всегда сами все всегда решали , ни разу не спрашивая на форумах… Если так то я рад за Вас. Вы гений
На старом форуме ЕвгенийП выкладывал как кучу лет назад на примитивном цп спутники запускали, многие тут начинали с i8080 и ещё более слабых, а щас вам 16 МГц быстродействия мало
Вариантов два:
- брать более мощный мк
- усовершенствовать алгоритмы
Мы говорим в разных реалиях . я вам говорю что из за моих ошибок при програмировании мк тормозит и надо правильно написать програмvу. А Вы говорите возьмите мощный мк и правильно напишите программу…
Говорите что на примитивном мк запускали спутники и тут жеговорите возьмите мощный мк
Вас не смущает диссонанс?
void MySort(void) {
char * MyStr[30] ;
}
вот черт…!!! А вот этого я совсем не учел… понятно по чему оно не работало…
по крайне мере одна из причин
Роман, это само по себя пиzдец, но если уж так делаете, то хотя бы проверяйте результаты malloc, Вы ж ни хера не проверяете! Откуда Вам знать выделена память или нет?
Так об этом и был вопрос, на который Вы так и не ответили! Повторю: нахера, при острой нехватке памяти, Вы копируете массив в ОЗУ целиком? Вам же @anonimSimen уже сказал, что нужно сортировать массив указателей не вытаскивая строки из прогмем (или еепром - что у Вас там) вообще! Вот и делайте так! Нахера Вы их вытаскиваете, да ещё целиком?
Вот сейчас сделайте так:
- громко скажите себе: “Тихо, ша!”, выдохните, успокойтесь и никуда не спешите;
- осознайте, что отныне Вы сортируете не сами строки, а только массив указателей на них;
- сделайте сортировку массива указателей вообще не вытаскивая строки из ПЗУ.
Если вдруг не получится, но я увижу попытку, я постараюсь помочь.
Отнюдь.
Отнюдь.
Предложенный метод имеет сложность O(N), тогда как сортировка в зависимости от метода от O(N*log(N)) до O(N^2).
Ну так предложенный метод намного проще сортировки.
PS. Прежде чем спорить, неплохо бы сначала изучить хоть основы теории.
Не нужна ему сортировка. От слова совсем.
В том и беда: новичок сформулировал вопрос для решения конкретной задачи. Сформулировал неправильно - не нужна ему сортировка, а нужно лишь вставить единственный элемент в отсортированный массив.
Но форум почему-то зацепился за эту сортировку, которая для данной задачи как из пушки по воробьям.
Выше был предложен метод:
- существенно проще сортировки,
- существенно менее требовательный к ресурсам,
- без всяких указателей.
А откуда он вообще берется?
Я понял так:
- Берется пустой массив.
- Берется новая строка.
- Некий алгоритм, после которого массив строк должен быть отсортирован.
- Переходим на шаг 2.
Так откуда здесь может появиться неотсортированный массив?
Думаю необходимо ТС дождаться, чтоб вразумительно задачу описал.
Если начального списка нет и стоит задача вставлять правильно данные, то конечно задача упрощается.
Да? Тогда зачем ему O(N), если это за О(log2(N)) делается?
Вообще-то это называется отладака.
И, собственно, по трудоемкости отладка примерно в 10 раз превышает трудоемкость написания кода.
Т.е. по сути - Вы просите сделать за Вас 90% работы.
Представьте себе, именно так и было.
Когда я учился программировать, форумов еще не было.
Но не думаю, что из этого следует, что каждый, кто программирует с того времени, - гений.
За O(log(N)) мы находим, куда вставлять, и еще за O(N) отодвигаем хвост массива, чтобы можно было вставить.
PS: O(log2(N)) == O(log10(N) == O(logE(N)) == O(log(N))