Вопрос:

Сортировка целых чисел с использованием ArrayList <Integer>

java arrays sorting arraylist

76 просмотра

2 ответа

8 Репутация автора

Метод сортировки должен возвращать строку с разделенным запятыми списком целых чисел из массива, отсортированным в порядке возрастания. Мой код не сортируется по размеру 4 или более. Я также не получаю ничего в консоли для возвращаемого типа без system.out.println (); Любое предложение / помощь приветствуется.

import java.util.ArrayList; public class Sorting { public static void main(String[] args) { ArrayList<Integer> alInput = makeArray(5); ArraySorter(alInput); } public static String ArraySorter (ArrayList<Integer> alSort) { if (alSort.size()<=1) { return String.valueOf(alSort.get(0)) ; } int iMin = alSort.get(0); int iMinIndex = 0; for (int i = 0;i<alSort.size();i++ ) { if (alSort.get(i)<iMin) { iMin = alSort.get(i); iMinIndex = i; } } alSort.remove(iMinIndex); System.out.println(String.valueOf(iMin) + ArraySorter (alSort)); return String.valueOf(iMin) + ArraySorter (alSort); } public static ArrayList<Integer> makeArray(int iSize) { ArrayList<Integer> alNum = new ArrayList<Integer>(); for (int i = 0; i<iSize;i++) { alNum.add((int )(Math.random() * 100 + 1)); } System.out.println(alNum); return alNum; } }
Автор: Apurva Gandhi Источник Размещён: 08.11.2017 10:22

Ответы (2)


0 плюса

106 Репутация автора

Решение

Попробуйте: я добавил комментарии, объясняющие, что я изменил для исправлений. Надеюсь, это поможет :)

import java.util.ArrayList;

public class Sorting {  
    public static void main(String[] args) 
    {
        ArrayList<Integer> alInput = makeArray(5);

        // now you can get the sorted string :)
        String sortedResult = ArraySorter(alInput);
        System.out.println("The sorted array is : " + sortedResult);

    }
    public static String ArraySorter (ArrayList<Integer> alSort) 
    {
        int iMin = alSort.get(0);
        int iMinIndex = 0;
        for (int i = 0;i<alSort.size();i++ )
        {
            if (alSort.get(i)<iMin)
            {
                iMin = alSort.get(i);
                iMinIndex = i;
            }
        }
        alSort.remove(iMinIndex);

        // added this one in myself, this is your base case for preventing a stack overflow:
        if (alSort.size() == 0) {
            return String.valueOf(iMin);
        }

        return String.valueOf(iMin) + "," + ArraySorter (alSort); // changed from : String.valueOf(iMin) + ArraySorter (alSort);
    }

    public static ArrayList<Integer> makeArray(int iSize)
    {
        ArrayList<Integer> alNum = new ArrayList<Integer>();

        for (int i = 0; i<iSize;i++)
        {
            alNum.add((int )(Math.random() * 100 + 1));
        }
        System.out.println(alNum);
        return alNum;
    }
}
Автор: Dragoş Bercea Размещён: 09.11.2017 04:05

1 плюс

527 Репутация автора

Почему бы тебе не попробовать этот легкий путь,

alInput.sort(null);
        String myString = "";
        for (int i=0;i<alInput.size();i++){
            myString  = myString + String.valueOf(alInput.get(i)) + ",";
        }
        myString= myString.substring(0,myString.length()-1);
        System.out.println(myString);
Автор: Rishabh Dugar Размещён: 09.11.2017 04:13
Вопросы из категории :
32x32