Есть ли способ, которым я могу преобразовать [indexOfMin] = a [startIndex] в форму ArrayList? Я не могу сделать это правильно - PullRequest
0 голосов
/ 25 октября 2019

В нижней части моей программы я пытаюсь преобразовать алгоритм сортировки выбора из массива в ArrayList. Те две строки, которые выдают ошибки, были ранее a[indexOfMin] = a[startIndex]; и a[startIndex] = min;. Я попытался изменить их на a.get(indexOfMin) = a.get(startIndex); и a.get(startIndex) = min;, но это не компилируется. Спасибо за любую помощь!

class SortDouble
{
    public static void main(String[] args)
    {
        int n = 10;
        ArrayList<Double> a = new ArrayList<Double>();
        Random r = new Random();

        for (int i = 0; i < n; i++)
            a.add(r.nextDouble());

        selectionSort(a);

        for (int i = 0; i < n; i++)
            System.out.println(a.get(i));

    }

    public static void selectionSort(ArrayList<Double> a)
    {
        int n = 10;
        for (int startIndex = 0; startIndex < n - 1; startIndex++)
        {
            double min = a.get(startIndex);
            int indexOfMin = startIndex;
            for (int j = startIndex + 1; j < n; j++)
                if (a.get(j) < min)
                {
                    min = a.get(j);
                    indexOfMin = j; 
                }
            a.get(indexOfMin) = a.get(startIndex); // error here
            a.get(startIndex) = min; // error here
        }
    }
}```


1 Ответ

0 голосов
/ 25 октября 2019

Чтобы обновить значение по определенному индексу в Arraylist, мы используем set метод.
Измените две строки, которые вызывали ошибку, на:

a.set(indexOfMin, a.get(startIndex));   // a[indexOfMin] = a[startIndex];
a.set(startIndex, min); // error here   // a[startIndex] = min;
...