Skip to content

Commit f1b1ea5

Browse files
committed
Реализован метод sortEvenValuesOnly для сортировки элементов с четными значениями числового поля
1 parent 26f5bda commit f1b1ea5

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

src/main/java/sorting/MergeSortStrategy.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,38 @@ private void merge(List<Client> clients, int left, int mid, int right,
9999
clients.set(left + k, temp.get(k));
100100
}
101101
}
102+
103+
@Override
104+
public void sortEvenValuesOnly(List<Client> clients, Comparator<Client> comparator) {
105+
if (clients == null || clients.isEmpty()) {
106+
return;
107+
}
108+
109+
// Создаем список для хранения элементов с четными idNumber и их индексов
110+
List<Client> evenClients = new ArrayList<>();
111+
List<Integer> evenIndices = new ArrayList<>();
112+
113+
// Собираем все элементы с четными idNumber и запоминаем их индексы
114+
for (int i = 0; i < clients.size(); i++) {
115+
Client client = clients.get(i);
116+
if (client.getIdNumber() % 2 == 0) {
117+
evenClients.add(client);
118+
evenIndices.add(i);
119+
}
120+
}
121+
122+
// Если нет элементов с четными значениями, ничего не делаем
123+
if (evenClients.isEmpty()) {
124+
return;
125+
}
126+
127+
// Сортируем только элементы с четными значениями
128+
sortWithComparator(evenClients, comparator);
129+
130+
// Возвращаем отсортированные элементы на исходные позиции
131+
for (int i = 0; i < evenClients.size(); i++) {
132+
int originalIndex = evenIndices.get(i);
133+
clients.set(originalIndex, evenClients.get(i));
134+
}
135+
}
102136
}

src/main/java/sorting/SortingStrategy.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,6 @@ public interface SortingStrategy {
99

1010
void sort(List<Client> clients);
1111
void sortWithComparator(List<Client> clients, Comparator<Client> comparator);
12+
void sortEvenValuesOnly(List<Client> clients, Comparator<Client> comparator);
1213
String getStrategyName();
1314
}

0 commit comments

Comments
 (0)