Привет. Ниже 2 варианта из d1 по сортировке вставками. В обоих вариантах есть ошибка: i >= 0, должно быть i > 0. Но Зевс все проходит. наверное надо добавить како-то тест на этот случай
//@Override
public <T> void sort1(T[] target, Comparator<T> comparator) {
for (int k = 1; k < target.length; k++) {
for (int i = k; i >= 0 && (comparator.compare(target[i - 1], target[i]) > 0); i--) {
T temp = target[i - 1];
target[i - 1] = target[i];
target[i] = temp;
}
}
}
@Override
public void sort(T[] target, Comparator comparator) {
for (int k = 1; k < target.length; k++) {
T temp = target[k];
int i = k;
while (i >= 0 && (comparator.compare(target[i - 1], target[i]) > 0)) {
target[i] = target[i - 1];
i--;
}
target[i] = temp;
}
}
@Override
public void sort(T[] target, Comparator comparator) {
for (int k = 1; k < target.length; k++) {
T temp = target[k];
int i = k;
while (i > 0 && (comparator.compare(target[i - 1], temp) > 0)) {
target[i] = target[i - 1];
i--;
}
target[i] = temp;
}
}
That's the message:
@Override public void sort(T[] target, Comparator comparator) {
for (int k = 1; k < target.length; k++) {
T temp = target[k];
int i = k;
while (i >= 0 && (comparator.compare(target[i - 1], target[i]) > 0)) {
target[i] = target[i - 1];
i--;
}
target[i] = temp;
}
}
@Override public void sort(T[] target, Comparator comparator) {
for (int k = 1; k < target.length; k++) {
T temp = target[k];
int i = k;
while (i > 0 && (comparator.compare(target[i - 1], temp) > 0)) {
target[i] = target[i - 1];
i--;
}
target[i] = temp;
}
}