IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Задача на сортировку
сообщение
Сообщение #1


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Есть следующая задача:

Входные данные
Дано число N (1 ≤ N ≤ 100000), а затем в одной или нескольких строках N натуральных чисел из диапазона от 1 до 100.
Выходные данные
Выведите в одной строке N чисел в неубывающем порядке.

Есть ограничения:
Лимит времени: 0.1 секунды

Понятно, что сортировать тут ничего не нужно, так как в заданное время не уложиться, есть решение:
Спойлер (Показать/Скрыть)


Но оно проходит всего-лишь 78.6% тестов, на остальных - превышение времени, максимальное время работы 0.109 секунды из 0.1 секунды, то есть превышение в 0.009с. От куда мне их взять ума не приложу sad.gif Пробовал кучу разных вариантов, без векторов, без строк, все только хуже. Нид хелп smile.gif

Добавлено через 19 мин.
вопрос решен, помогла замена iostream на stdio.h smile.gif


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


(старожил форума, многое знает):
> [код с вылизанным алгоритмом]
(новичок, только начал учиться программировать):
> В С не разбираюсь, но наверное ты пузырьковой сортируешь.
> почитай тут
> Методы сортировок

Мне кажется, это надо добавить в перлы форума.


Добавлено через 16 мин.
Ещё из методов сортировок могу предложить такой метод. Он вообще для массива строк предназначен, но работает для массива чего угодно, так как что угодно можно представить строкой (например, 32-битное число - это строка из 4 символов, 80-битное вещественное - строка из 10 символов).

Просто загоняем все строки в префиксное дерево. А потом обходим это дерево и выводим в новый массив. Если надо, чтобы массив умел повторяющиемся строки не выбрасывать, то в вершинах префиксного дерева храним число раз, сколько строка встретилась в массиве.

Время пропорционально суммарной длине строк в массиве.
То есть для массива вещественных чисел время будет теоретически линейное.
На практике - не знаю, выделение памяти для вершин дерева и недружелюбный к кешу обход этого дерева сильно всё портят.
Кто-то сравнивал поразрядную сортировку и кусорт, так вот поразрядная обгоняла кусорт только на какой-то совсем дикой длине массива, за миллиард.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(TarasBer @ 22.04.2011 10:01) *
Мне кажется, это надо добавить в перлы форума.
Да ладно тебе, не смущай молодежь! ))
А если кажется - добавляй.
Надеюсь, чувство юмора есть у всех (или же пусть развивают)) и обид не будет.
А вообще, я просто восхищен сдержанностью, с которой Клема ответил )), +1

Цитата
работает для массива чего угодно, так как что угодно можно представить строкой (например, 32-битное число - это строка из 4 символов, 80-битное вещественное - строка из 10 символов).
Так ли?
В строке спереди - младшие байты, а экспонента содержится в старших..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
klem4   Задача на сортировку   21.04.2011 20:05
DarkWishmaster   В С не разбираюсь, но наверное ты пузырьковой сорт…   22.04.2011 1:35
Freedom   В С не разбираюсь, но наверное ты пузырьковой сор…   22.04.2011 3:06
klem4   DarkWishmaster Как я уже указал в первом по посте …   22.04.2011 11:35
Lapp   То, что потоки работают медленее, чем стандартный …   22.04.2011 11:49
TarasBer   (старожил форума, многое знает): > (новичок, т…   22.04.2011 13:01
Lapp   Мне кажется, это надо добавить в перлы форума.Да л…   22.04.2011 14:43
TarasBer   > В строке спереди - младшие байты, а экспонент…   22.04.2011 15:05
Guest   Топикстартеру: смотрим, как работает std::multimap…   22.04.2011 18:17
TarasBer   > обогнать отшлифованный годами стандартный кла…   22.04.2011 18:30
karpinsky   Ничего у него не страдает, если правильно использо…   22.04.2011 19:51
-TarasBer-   Ты всерьёз считаешь, что этот самый мультимап (вну…   22.04.2011 20:31
karpinsky   А ты всерьез считаешь, что пробежаться по дереву о…   22.04.2011 20:49
-TarasBer-   > А ты всерьез считаешь, что пробежаться по дер…   22.04.2011 21:51


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.05.2024 23:39
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name