April 30, 2013

Задача на алгоритмизацию.

На работе провожу тренинг по MongoDB.

Как "necessary knowledge" для тренига заявил Software engineering и JavaScript core (ECMA-262 standard).

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

Напишите на базовом JavaScript программу, выбирающую из массива data – одну треть его наибольших элементов. Оцените вычислительную сложность алгоритма.
Результатом работы должна быть javascript функция и оценка сложности алгоритма – количество операций в зависимости от N (размера исходного массива). Для написания алгоритма не должны использоваться библиотеки или стандартные функции сортировки. Полученный набор не обязан быть упорядоченным. Пример:
~~~~~~
function selectMaxThird(data) {
// algorithm ….
return result;
}
var data = [6,5,6,1,7,3,6,8,9,6,6,1,2,3,6,6,6]; // Input data - 17 elements
var result = selectMaxThird(data); // [6,6,7,8,9,8]- 6 elements : 3*6 approx = 17 ;-)
~~~~~~

Анализ присланных решений показывает что ответы, которые я в свое время хотел увидет от студентов, дают специалисты уровня D4 (то есть Lead Software Engineer).