Это один из вопросов интервью, который у меня был недавно. Хотелось бы узнать у других восприятие подхода к этой проблеме.
Вопрос:
Вам дана структура, которая содержит данные о сотруднике с двумя элементами: int
отдел и string
имя.
struct Employee
{
string Name;
int Dept;
}
Вам дается информация о N Сотрудниках, среди которых N / 2 сотрудника имеют Dept == 0
, а N / 2 сотрудника имеют Dept == 1
, расположенные в произвольном порядке. Вам необходимо отсортировать данные о сотрудниках по их значению Dept
, и оно должно быть стабильным , то есть порядок 1 и 0 в исходной записи должен сохраняться.
Например, с учетом следующих образцов данных:
Name Dept
X1 0
X2 1
X3 0
X4 1
X5 0
после сортировки результат должен быть:
Name Dept
X2 1
X4 1
X1 0
X3 0
X5 0
Алгоритм должен быть стабильным, а временная сложность должна быть O (N) с постоянным пространством для дополнительных переменных (что означает, что сортировка должна выполняться на месте).