[Архив!] Чистая математика, физика, химия и т.п.: задачки для тренировки мозгов, никак не связанные с торговлей - страница 583

 
MikeM:

Про часы:

через 4 минуты после старта переворачиваем 4-минутные

после переворачивания в 4-минутных 4 мин., в 7-минутных 3 мин.

ещё через 3 минуты

в 4-минутных 1 мин, в 7-минутных - 0

переворачиваем 7-минутные

в 4-минутных 1 мин, в 7-минутных - 7

ещё через минуту

в 4-минутных 0, в 7-минутных - 6

переворачиваем 7-минутные

в 4-минутных 0, в 7-минутных - 1

ещё через минуту - нужное время!

правильно)
 
Первый проход - подсчёт единиц, двоек и троек, второй проход - заполнение "отсортированного" массива нужным количеством нужных чисел
 
Первый проход считаем, второй пишем. О(n) ессно.
 
GaryKa:

Подкину задачку.

Боян конечно, но на собеседованиях как апофеоз знаний на сортировку массивов катит ))


Итак, задача на сортировку

есть масив из N ячеек, в котором в произвольном порядке размещены единицы, двойки и тройки.

Построить самый оптимальный алгоритм сортировки.


Т.е. только 3 варианта данных?

Первый проход: считаем сколько единиц, сколько двоек и сколько троек.

Второй проход: заполняем.

Итого 2 прохода.

 
MikeM:
Первый проход - подсчёт единиц, двоек и троек, второй проход - заполнение "отсортированного" массива нужным количеством нужных чисел
Да )) бедные кандидаты зашореные предыдушими вопросами по сортировке чего только не вытворяют на потеху публике, и пузырьком, и вставками, и всякими комбинациями с исключениями
 
GaryKa:
Да )) бедные кандидаты зашореные предыдушими вопросами по сортировке чего только не вытворяют на потеху публике, и пузырьком, и выборкой, и всякими комбинациями с исключениями
Всё что нужно - не сложно. Всё, что сложно - не нужно!
 

Простенький (для программистов) вопрос:

A+B=...

 
lvalue expected :)
 
Это не оператор какого-либо языка. Это левая часть равенства. Что должно быть написано в правой части?
 
sand:


Т.е. только 3 варианта данных?

Первый проход: считаем сколько единиц, сколько двоек и сколько троек.

Второй проход: заполняем.

Итого 2 прохода.

В один проход:

Создаем пустую копию массива такого же размера, инициализируем его двойками.

Идем с начала массива. Встретили 1 - пишем в копию, начиная с начала, встретили 3 - пишем в копию, начиная с конца.

Причина обращения: