Это один из вопросов интервью, который у меня был недавно. Я хотел бы узнать другое восприятие подхода к этой проблеме.
Вопрос:
Вам предоставляется структура, в которой содержатся данные сотрудника с двумя элементами, int
department и string
name.
struct Employee
{
string Name;
int Dept;
}
Вам предоставлены сведения о N сотрудниках, среди которых сотрудники N/2 имеют Dept == 0
, а сотрудники N/2 имеют Dept == 1
, расположенных в произвольном порядке. Вам нужно отсортировать данные о сотрудниках на основе их значения Dept
, и это должно быть stable, то есть порядок 1s и 0s в оригинальная запись должна быть сохранена.
Например, учитывая следующие данные примера:
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), с постоянным пространством для дополнительных переменных (что означает, что сортировка должна выполняться на месте).