Re[4]: Тестовое задание ...
От: Evgeny.Panasyuk Россия  
Дата: 15.06.15 19:39
Оценка:
Здравствуйте, GreenTea, Вы писали:

GT>Согласен.. Поправил.

GT>
GT>   public void addTask(int clientId, Runnable task) {
GT>      synchronized (tasks) {
GT>         int nextIndex = findBestIndexToInsert(clientId);
GT>         tasks.add(nextIndex, new ClientTask(clientId, task));

GT>         if (!executingClients.contains(clientId)) {
GT>            tasks.notify();
GT>         }
GT>      }
GT>   }

GT>   private int findBestIndexToInsert(int clientId) {
GT>      int minIndex = 0;

GT>      for (int i = 0; i < tasks.size(); ++i) {
GT>         ClientTask task = tasks.get(i);
GT>         if (task.clientId == clientId) {
GT>            minIndex = i + 1;
GT>         }
GT>      }
GT>



Сложность N вызовов addTask квадратичная — O(N*N).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.