avva: (moose)
avva ([personal profile] avva) wrote2013-05-13 01:17 am

альтернатива физзбаззу

Цитирую из подзамочной записи с разрешения автора, который работает в американской компании и интервьюирует программистов:
Интесная закономерность выявляется. Мы начинаем интервью с того, что просим кандидата прочитать вот такой код, и сказать, что он делает. Как бы он назвал эту функцию?

private static int ok(int a, int b) {
   while (a >= b) a -= b;
   return a;
}

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

[identity profile] d-ohrenelli.livejournal.com 2013-05-13 09:07 am (UTC)(link)
сортировать все равно не нужно.
Посчитать количество каждого номера и сгенерировать массив.
O(n)

[identity profile] gineer.livejournal.com 2013-05-13 09:14 am (UTC)(link)
да, я тоже так понял, сперва
но, там, всетаки, еще было ЭТО требование -- каждое из чисел встречается один раз. ;)

[identity profile] mtyukanov.livejournal.com 2013-05-13 09:42 am (UTC)(link)
Так "подсчитать количество каждого номера и сгенерировать массив" -- это и есть "сортировать" для данного случая. Если бы под "сортировать" имелось в виду "пользоваться стандартными методами сортировки" -- это было бы просто глупо.

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

Можно развить ее до более задумчивой, если запретить использовать для подсчета внешний контейнер -- предположим, дело происходит в условиях жестких ограничений по памяти, нужен чистый inplace. Или просто порассуждать, когда для хранения количеств лучше пользоваться массивом, а когда динамической структурой вроде списка. Ну и, да, спросить, а что будет, если добавить условие "неповторяющиеся числа". Все легкое, но все вполне осмысленное.

[identity profile] gineer.livejournal.com 2013-05-13 09:54 am (UTC)(link)
дык... там и была эта оговорка, про "неповторяющиеся числа",
которая обессмысливает вообще сам вопрос
по крайней мере с моей т.з.
с точки зрения интервбюера -- все было ок :)

[identity profile] d-ohrenelli.livejournal.com 2013-05-13 09:57 am (UTC)(link)
Я проверил, это, кстати, стандартный алгритм сортировки, на3ывается сортировка подсчетом или
counting sort.

Так что я был не прав.

[identity profile] unbe.livejournal.com 2013-05-13 07:25 pm (UTC)(link)
http://en.wikipedia.org/wiki/Counting_sort

[identity profile] unbe.livejournal.com 2013-05-13 07:26 pm (UTC)(link)
ой, поздно заметил ваш ответ на собственный комментарий.