Сортировка массива выборкой,есть 2 метода один возвращает мин.элемент, 2 метод индекс.Тест выдает ошибку, прошу помочь в решении
public class SortSelected {
public static int[] sort(int[] data) {
for (int i = 0; i < data.length; i++) {
int min = MinDiapason.findMin(data, 0, data.length);
int index = FindLoop.indexOf(data, min, 0, data.length);
int temp = data[index];
data[index] = data[i];
data[i] = temp;
}
return data;
}
}
public class FindLoop {
public static int indexOf(int[] data, int el, int start, int finish) {
int rst = -1;
for (int index = start; index < finish; index++) {
if (data[index] == el) {
rst = index;
break;
}
}
return rst;
}
}
public class MinDiapason {
public static int findMin(int[] array, int start, int finish) {
int min = array[start];
for (int i = start; i < finish; i++) {
if (array[i] < min) {
min = array[i];
}
}
return min;
}
}
import org.junit.Test;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
public class SortSelectedTest {
@Test
public void whenSort() {
int[] input = new int[] {3, 4, 1, 2, 5};
int[] result = SortSelected.sort(input);
int[] expect = new int[] {1, 2, 3, 4, 5};
assertThat(result, is(expect));
}
}
Ответы (1 шт):
Автор решения: Алексей Осецкий
→ Ссылка
Класс SortSelected должен выглядеть так
public class SortSelected {
public static int[] sort(int[] data) {
for (int i = 0; i < data.length; i++) {
int min = MinDiapason.findMin(data, i, data.length);
int index = FindLoop.indexOf(data, min, i, data.length);
int temp = data[index];
data[index] = data[i];
data[i] = temp;
}
return data;
}
}
Цитата Serodv: в методы findMin и indexOf надо передавать i как стартовый индекс поиска, а не 0.
Тогда тест отработает