#java #sorting #selection
#java #сортировка #выбор
Вопрос:
я работаю с методом выбора short для сортировки массива. метод запускает свой метод минимальной позиции с цикла for, который начинается с «i = from 1». почему он начинается с этого вместо «i = 0»?
может ли кто-нибудь объяснить это для меня, пожалуйста?
Спасибо!
редактировать: добавлен контекст
/**
Finds the smallest element in a tail range of the array.
@param a the array to sort
@param from the first position in a to compare
@return the position of the smallest element in the
range a[from] . . . a[a.length - 1]
*/
private static int minimumPosition(int[] a, int from)
{
int minPos = from;
for (int i = from 1; i < a.length; i )
{
if (a[i] < a[minPos]) { minPos = i; }
}
return minPos;
}
}
Комментарии:
1. Можете ли вы поделиться некоторым кодом, чтобы у нас был некоторый контекст для этого вопроса?
2. Вы работаете над этим. Расскажите нам, почему вы написали
i = from 1
3. Потому что вы пытаетесь найти минимум, и вам не нужно сравнивать [from] с самим собой. По сути, это небольшая оптимизация.
Ответ №1:
Документация уже говорит вам, почему это так, i = from 1
а не i = 0
нет. Документация: Finds the smallest element in a tail range of the array.
Поскольку метод находит наименьший элемент, завершающий from
цикл сравнивает только каждый элемент в позиции from
или больше. И поскольку a[from]
это начальный минимум, вы можете начать сравнение с позиции from 1
.