Я работаю над домашним заданием, включающим методы сортировки массивов, нам даны методы, и у меня возникли небольшие проблемы с пониманием того, как работает этот метод сортировки вставками.Более конкретно, роль, которую две переменные передают методу.
Как я понимаю, переменная Key описывает индекс массива, в который вы хотите поместить вставленный номер, а элемент - это номер.сам.В рамках main я просто прошу пользователя ввести два числа и передать их методу, один для ключа, а другой для элемента.Вот код для этого сегмента:
public final void insertion(double Key, double Item)
{
if (arraySize == 0)
{
arr[0] = Item;
}
/* find the position for inserting the given item */
int position = 0;
while (position < arraySize & Key > arr[position])
{
position++;
}
for (int i = arraySize; i > position; i--)
{
arr[i] = arr[i - 1];
}
arr[position] = Item;
arraySize = arraySize + 1;
}
Однако, когда я передаю удваивается методу, как я объяснил, я получаю сообщение об ошибке, указывающее, что индекс (длина массива) выходит за пределы длины (длина массива).
Очевидно, я неправильно понимаю цель или структуру этого метода и не могу понять это.Любая помощь будет оценена.Я знаю, что это очень простая проблема.
РЕДАКТИРОВАТЬ: Вот как я инициализирую свой массив, данный код находится в отдельном классе от моего основного метода:
public static double[] arr;
private int arraySize;
public sortedArrayAccess(int scale)
{
arr = new double[scale];
arraySize = arr.length;
}
Внутри моего основногометод:
System.out.print("Enter an array size: ");
int d = sc.nextInt();
sortedArrayAccess test = new sortedArrayAccess(d);
for(int i=0;i<test.arr.length;i++)
{
System.out.print("Enter a number for index " + i + ": ");
double c = sc.nextDouble();
test.arr[i] = c;
}